Hoppa till innehåll

C++ Meny


5FJSKFJSKGJES
 Dela

Rekommendera inlägg

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 av 4FJSKFJSKGJES
Länk till kommentar
Dela på andra sajter

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 av 4FJSKFJSKGJES
Länk till kommentar
Dela på andra sajter

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 sats

Detta 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 av Vitdom
Länk till kommentar
Dela på andra sajter

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 av 4FJSKFJSKGJES
Länk till kommentar
Dela på andra sajter

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 av Vitdom
Länk till kommentar
Dela på andra sajter

Men vad är då sant? :P

Stannar 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 av Vitdom
Länk till kommentar
Dela på andra sajter

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 av 4FJSKFJSKGJES
Länk till kommentar
Dela på andra sajter

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.

Gäst
Svara på det här ämnet...

×   Klistrade in som rich text.   Klistra in som vanlig text istället

  Endast 75 emojis är tillåtet.

×   Din länk har automatiskt inbäddats.   Visa som en länk istället

×   Ditt tidigare innehåll har återställts.   Rensa redigeraren

×   Du kan inte klistra in bilder direkt. Ladda upp eller infoga bilder från URL.

 Dela

×
  • Skapa ny...