5FJSKFJSKGJES Skrivet 7 Februari 2012 Rapport Dela Skrivet 7 Februari 2012 (redigerat) Hallå. Det är så att jag försöker mig på en meny med hjälp av en switch-sats. När man då skriver in 1, 2 eller så kommer man då till en annan funktion. Det fungerar som det ska hitills. Men nu vill jag komma tillbaka till menyn. Hur gör jag enklast det. Jag ska ju antagligen returnera någonting men har ni något tips om hur jag ska göra det. Skulle uppskatta hjälp! Här är min kod just nu: #include <iostream> using namespace std; int addition(); int subtraktion(); int main() { cout << "Välkommen. Vad vill du göra i menyn?" << endl << "1. Addition" << endl << "2. Subtraktion" << endl; int menyval; cin >> menyval; switch (menyval) { case 1: addition(); case 2: subtraktion(); } system ("pause"); return 0; } int addition() { int t1, t2; cout << "Skriv in två tal"; cin >> t1 >> t2; int svar=t1+t2; cout << svar; return 0; } int subtraktion() { return 0; } Kanske kan man använda typ en ny switch-sats? Om jag skriver in "1" så skickas den valet upp, men hur gör jag då för att den ska komma till menyn? Redigerat 7 Februari 2012 av 4FJSKFJSKGJES Citera Länk till kommentar Dela på andra sajter More sharing options...
WASD Skrivet 7 Februari 2012 Rapport Dela Skrivet 7 Februari 2012 Kalla på main(); igen så borden den komma tillbaks dit. Citera Länk till kommentar Dela på andra sajter More sharing options...
Nomatic Skrivet 7 Februari 2012 Rapport Dela Skrivet 7 Februari 2012 Vad hände med ";" efter "int main()"? Citera Länk till kommentar Dela på andra sajter More sharing options...
WASD Skrivet 7 Februari 2012 Rapport Dela Skrivet 7 Februari 2012 Vad hände med ";" efter "int main()"?När man kallar på en funktion skriver man 'main();' men när man definierar den är det inget semikolon. Citera Länk till kommentar Dela på andra sajter More sharing options...
5FJSKFJSKGJES Skrivet 7 Februari 2012 Författare Rapport Dela Skrivet 7 Februari 2012 (redigerat) Kalla på main(); igen så borden den komma tillbaks dit. Då skrivs ju menyn ut igen. Det jag tänkt mig är att man bara ska få välja vart man går i menyn igen. Jag har gjort om den lite nu, men jag vet inte om det är dåligt eller bra gjort. Vad hände med ";" efter "int main()"?Då avslutas int main() och det inom {} blir inte utskrivet. :) Här är det nya, är det dåligt skrivet? #include <iostream> using namespace std; int meny(); void addition(); void subtraktion(); int main() { cout << "Välkommen. Vad vill du göra i menyn?" << endl << "1. Addition" << endl << "2. Subtraktion" << endl; meny(); system ("pause"); return 0; } int meny() { int menyval; cin >> menyval; switch (menyval) { case 1: addition(); case 2: subtraktion(); default: cout << "Du kan inte välja det numret, försök igen"; meny(); } return 0; } void addition() { int t1, t2; cout << "Skriv in två tal" << endl; cin >> t1 >> t2; int svar=t1+t2; cout << svar << endl << "Du återgår nu till menyn igen"; meny(); } void subtraktion() { int t1, t2; cout << "Skriv in två tal" << endl; cin >> t1 >> t2; int svar=t1-t2; cout << svar << endl << "Du återgår nu till menyn igen"; meny(); } Redigerat 7 Februari 2012 av 4FJSKFJSKGJES Citera Länk till kommentar Dela på andra sajter More sharing options...
WASD Skrivet 7 Februari 2012 Rapport Dela Skrivet 7 Februari 2012 Ja det funkar eller? Citera Länk till kommentar Dela på andra sajter More sharing options...
Vitdom Skrivet 7 Februari 2012 Rapport Dela Skrivet 7 Februari 2012 (redigerat) Ja, det är dåligt skrivet. Du kommer att erfara en stack overflow med det sättet om du anropar meny tillräckligt många gånger. Enklast är att sätta in huvuddelen av programmet i en loop, såhär:#include <iostream> using namespace std; int main() { int val; cout << "meny"; while(true) { cin >> val; if(!val) break; // Om val = 0, avsluta switch(val) {...} } } Vad hände med ";" efter "int main()"?När man kallar på en funktion skriver man 'main();' men när man definierar den är det inget semikolon.Det är endast när man deklarerar eller anropar en funktion som man avslutar satsen med ett semikolon. En funktionsdeklaration är lika mycket en sats som en variabeldeklaration är.int func1(int a, int b); // Deklarerande sats extern int hejhej; // Deklarerande satsDetta leder t.ex. till att det är möjligt att man inte behöver deklarera funktioner globalt, utan man kan göra det längre ner i räckvidden. Redigerat 7 Februari 2012 av Vitdom Citera Länk till kommentar Dela på andra sajter More sharing options...
5FJSKFJSKGJES Skrivet 7 Februari 2012 Författare Rapport Dela Skrivet 7 Februari 2012 (redigerat) Ska jag alltså lägga in själva menyn i main? Hur ska jag då kunna göra så jag kan välja från menyn igen, men inte att jag skriver ut själva cout-satsen igen. Jag är en nybörjare på C++ så.. :P Edit - nu när jag kollade insåg jag att det innehöll en while. Då förstår jag! :) Så i menyer ska man använda loopar? Men vad gör "true" i whileloopen? Har tidigare bara använt mig av mindre än där förut. Redigerat 7 Februari 2012 av 4FJSKFJSKGJES Citera Länk till kommentar Dela på andra sajter More sharing options...
Vitdom Skrivet 7 Februari 2012 Rapport Dela Skrivet 7 Februari 2012 (redigerat) Ska jag alltså lägga in själva menyn i main? Hur ska jag då kunna göra så jag kan välja från menyn igen, men inte att jag skriver ut själva cout-satsen igen. Jag är en nybörjare på C++ så.. :P Edit - nu när jag kollade insåg jag att det innehöll en while. Då förstår jag! :)Så i menyer ska man använda loopar? Men vad gör "true" i whileloopen? Har tidigare bara använt mig av mindre än där förut."true" är ett reserverat nyckelord i C++ som representerar det booleska värdet sant. Alltså "if true = om sant". Redigerat 7 Februari 2012 av Vitdom Citera Länk till kommentar Dela på andra sajter More sharing options...
5FJSKFJSKGJES Skrivet 7 Februari 2012 Författare Rapport Dela Skrivet 7 Februari 2012 (redigerat) Men vad är då sant? :P Stannar då aldrig loopen? Redigerat 7 Februari 2012 av 4FJSKFJSKGJES Citera Länk till kommentar Dela på andra sajter More sharing options...
Vitdom Skrivet 7 Februari 2012 Rapport Dela Skrivet 7 Februari 2012 (redigerat) Men vad är då sant? :PStannar då aldrig loopen?Nej precis, loopen stannar aldrig då villkoret aldrig utvärderas till falskt("false"). Man kan manuellt hoppa ut ur en loop genom att ange instruktionen "break;" i slingans associationsräckvidd, som jag gjorde:while(true) { ... if(!val) break; ... } Notera att det inte går att hoppa ur en loop som befinner sig längre upp i räckvidden om man redan befinner sig i en inre loop:while(true) // Fortsätter { while(true) // Hoppas ur { break; } }Detta gäller för while, for & switch-slingor. Redigerat 7 Februari 2012 av Vitdom Citera Länk till kommentar Dela på andra sajter More sharing options...
5FJSKFJSKGJES Skrivet 7 Februari 2012 Författare Rapport Dela Skrivet 7 Februari 2012 (redigerat) Då kan man alltså hoppa ur en loop genom att skriva in detta i loopen? if (tjabba<20){break;} Om man alltså ökar "tjabba" med något tal för varje gång, då kommer den hoppa ur loopen då? Nu är väl detta en omväg, men jag bara undrar. -- Edit - Jag skrev en annan fråga men insåg hur dum jag var. Redigerat 7 Februari 2012 av 4FJSKFJSKGJES Citera Länk till kommentar Dela på andra sajter More sharing options...
Rekommendera inlägg
Gå med i konversationen
Du kan skriva nu och registrera dig senare. Om du har ett konto, logga in nu för att posta med ditt konto.