webForumDet fria alternativet

switch-sats problem

9 svar · 367 visningar · startad av jenicpunktnu

jenicpunktnuMedlem sedan juni 200343 inlägg
#1

Tjena!

Sitter och letar och letar och testar mig fram till lösningar, men har dessvärre ej lyckats hitta den korrekta (behöver ej vara korrekt, bara de funkar)

Problemet jag har är att jag vill stoppa upp en switch-sats och få den att återgå till start igen...

switch (bestallning)

{
case '1':
cout << "Kaffe\t"<< "pris\t" << KaffePris<<"\n\n";
cout << "Lägg i\t"<< KaffePris <<"\tFör att få din beställning\n\n";
pris = KaffePris;
vara = "kaffe";
break;

case '2':
cout << "Mocka\t"<< "pris\t" << MockaPris<<"\n\n";
cout << "Lägg i\t"<< MockaPris <<"\tFör att få din beställning\n\n";
pris = MockaPris;
vara = "Mocka";
break;

case '3':
cout << "Choklad\t" << "pris\t" << ChockladPris<<"\n\n";
cout << "Lägg i\t"<< ChockladPris <<"\tFör att få din beställning\n\n";
pris = ChockladPris;
vara = "Chocklad";
break;

case '4':
cout << "Nyponsoppa\t" << "pris\t" << NyponsoppaPris<<"\n\n";
cout << "Lägg i\t"<< NyponsoppaPris <<"\tFör att få din beställning\n\n";
pris = NyponsoppaPris;
vara = "Nyponsoppa";
break;

case '5':
cout << "Fruktsoppa\t" << "pris\t" << FruktsoppaPris<<"\n\n";
cout << "Lägg i\t"<< NyponsoppaPris <<"\tFör att få din beställning\n\n";
pris = FruktsoppaPris;
vara = "Fruktsoppa";
break;

default:
cout << "Kontrollera ditt val igen";
break;

}
cout << "\n\n";

Alltså här vill jag ha in en IF sats eller nått under default, och det är just detta jag ej kan hitta någon förklaring till...hur man beter sig och hur man får koden att bryta upp och återgå till switch (bestallning) igen (för satsen går ut på att man har 5 val, kopplade till 1-5 i en getch. Default är alltså om man av nån anledning väljer något annat allternativ, dvs 0,6-9 eller något annat tecken på tangentbordet) Då vill jag stoppa upp denna satsen och den återgår till början igen och användaren får kontrollera sin inmatning igen och välja något av de 5 allternativen som angivits innan i koden

Samma partull/problem har jag även stött på vid ett senare tillfälle av koden, närmligen...
------------
cout << "Ange beloppet du vill betala:";
cin >> belopp;
cout << "\n\n";

if (belopp > pris)
cout << "Insatt summa " << belopp << "kr";
else
cout << "Beloppet för litet";

Även här skulle jag vilja ha in någon form av kod eller sträng som gör att koden åtegår vid "else" svar till "Ange beloppet..." igen, utan att den vandrar vidare eller något annat händer i programmet.

Hoppas du förstår vad jag menar!

På förhand TACK! :i :q

UlfTMedlem sedan maj 20018 027 inlägg
#2

Du skulle ju kunna pröva att stoppa in de block du vill upprepa, inom "while"- eller "for"-loopar, tex.

En if-sats kan du givetvis stoppa in i "default"-blocket i din första switch. Den ser då ut som if-satser brukar se ut. Inga konstigheter med det.

SPiNMedlem sedan mars 20007 896 inlägg
#3

Använd dig av metoder när du strukturerar upp dina applikationer, allt blir så mycket lättare då. En metod för att hantera switch-satsen, en för att hantera inläsning från användaren, osv. Då kommer du säkert på själv ett sätt som du löser ditt problem på. :)

jenicpunktnuMedlem sedan juni 200343 inlägg
#4

Tack för era snabba svar!

"Problemet" jag har, är att detta upplägget av koden är det enda jag behärskar och förstår fullt ut. Har just börjat studera detta språket (hehe märks kanske på valet av problemlösning?) Det är just detta som gör att jag gärna i den mån de går, håller mig kvar till detta upplägget. Fast då kanske utvecklar koden till en onödigt "stor" variant, men då med ett innehåll som jag behärskar fullt ut (och då tar lärdom av detta och kan förminska den i efterhand genom att jag lärt mig nya "ord"/lösningar/upplägg och vägar). Går det att lösa detta problemet efter dessa omstänigheter? eller vilken lösning hade varit den bästa?

UlfTMedlem sedan maj 20018 027 inlägg
#5

Eftersom du precis har börjat lära dig, kanske du ska ta lite tid på dig att lära dig ännu mer om klasser, metoder, olika typer av loopar, etc, så kan du använda även dessa till din hjälp. Att bara använda switch-block, om det är vad du menar med att lösa problemet efter nuvarande omständigheter, kommer du inte långt med.

jenicpunktnuMedlem sedan juni 200343 inlägg
#6

Nej de är bara en liten del av hela koden, de jag söker just nu är hur man får en switch sats att återgå till början igen. (om det som nu visar sig att någon av valen ej är korrekta) alltså klickar användaren på någon annan tangent änn 1-5 så kommer han får ett fel meddelande och göra om denna inmatningen igen

aasahMedlem sedan mars 20034 471 inlägg
#7

jenicpunktnu skrev:

Tack för era snabba svar!

"Problemet" jag har, är att detta upplägget av koden är det enda jag behärskar och förstår fullt ut. Har just börjat studera detta språket (hehe märks kanske på valet av problemlösning?) Det är just detta som gör att jag gärna i den mån de går, håller mig kvar till detta upplägget. Fast då kanske utvecklar koden till en onödigt "stor" variant, men då med ett innehåll som jag behärskar fullt ut (och då tar lärdom av detta och kan förminska den i efterhand genom att jag lärt mig nya "ord"/lösningar/upplägg och vägar). Går det att lösa detta problemet efter dessa omstänigheter? eller vilken lösning hade varit den bästa?

Det är bara mycket små testprogram som kan kodas upp för att testa "precis det jag kan använda en switch/if/for/while..... et.c. för". Du kommer inte att lära dig mycket om programmering om du går den vägen. Läs istället in dig på några grundläggande styrstrukturer och vad man har dem till innan du försöker göra något så här pass avancerat. Switch är inget bra val, och den "struktur" som blir följden av att lösa problemet på det sätt du antyder blir i bästa fall rörig och oläslig, i värsta fall får du inte till det. Programmering är till stor del strukturering och att dela upp problem i hanterliga bitar. Lär dig några styrstrukturer, lär dig om funktioner och procedurer, det är enda sättet.

PeWMedlem sedan juni 200010 432 inlägg
#8

jenicpunktnu skrev:

Nej de är bara en liten del av hela koden, de jag söker just nu är hur man får en switch sats att återgå till början igen. (om det som nu visar sig att någon av valen ej är korrekta) alltså klickar användaren på någon annan tangent änn 1-5 så kommer han får ett fel meddelande och göra om denna inmatningen igen

Det du behöver är en loop:

pseudo

do{
  input
  switch(resultat av input){
  ...
  ...
  ...
   }
}while(input är fel);

Sen bör man som asaah menar, välja styrsats efter behov. Nu är detta ingen stor kod så en switchsats i detta exempel duger gott. Jag antar att du har nån form av litteratur som du kan kika i för att gå vidare ;)

Btw... Välkommen till wF! :D

p.s
Med fördel - använd kodtaggar ;)

jenicpunktnuMedlem sedan juni 200343 inlägg
#9

Tack för svaren! Ang. Litteratur så har jag sådan, har även läst denna om och om igen, och slagit i den fram och tillbaka. Men alltså ej hittat eller tydligen förstått vad jag letat efter, därav frågan här och exemplerna jag tagit upp. Jag förstår hur man bygger väggarna till rummer, även hur man bygger dörr öppningen. Men alltså EJ fattat hur man öppnar och stänger dörren som där sedan skall placeras. Vilken lösning som är den bästa, spelar mig ingen roll. Det är kunskapen om hur man bygger in dörren som sedan skall gå att öppna men även alltså låsa, som jag söker. Just nu har jag ju alltså endast valv i mitt hem och de är ju ej så bra om man vill stänga in något. Hehe dåligt exempel kanske, men det är just det konkreta jag söket.

PeWMedlem sedan juni 200010 432 inlägg
#10

  :q

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)