C++ kod while prob...|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
C++ kod while prob...
Tovedal
Kommer du hit ofta?
Medlem
Forum Posts: 282
Member Since:
June 29, 2004
sp_UserOfflineSmall Offline
1
December 30, 2004 - 1:36 pm
sp_Permalink sp_Print

i den här koden så ska man kunna skriva in 2 tal för att sedan välja vad man vill göra med talen... while satsen ska ordna det så att om man skriver 0 eller mer än 4 när man ska välja vilkn funktion som ska utföras så ska allting börja om från början, men nu händer precis motsvarande sak..

#include
#include
using namespace std;
main()
{
int tal3;
double tal1, tal2, svar, mm;
while (tal3 > 0 && tal3 < 5)
{
cout << "Skriv in ett tal som du sedan kan dela, multiplicera, addera eller supptrahera, med ett annat tal. " << endl;
cout << "tal 1: "; cin >> tal1;
cout << "tal 2: "; cin >> tal2;
cout << "vad vill du göra?" << endl <<
"+ tryck 1." << endl <<
"- tryck 2." << endl <<
"x tryck 3." << endl <<
"/ tryck 4. ";cin >> tal3;
cout << " " << endl;
cout << "=========" << endl;
cout << " " << endl;
if (tal3 == 1)
{
svar = tal1 + tal2;
cout << "Svar: " << svar << endl;
}
else if (tal3 == 2)
{
svar = tal1 - tal2;
cout << "Svar: " << svar << endl;
}
else if (tal3 == 3)
{
svar = tal1 * tal2;
cout << "Svar: " << svar << endl;
}
else if (tal3 == 4)
{
svar = tal1 / tal2;
cout << "Svar: " << svar << endl;
}
else
{
cout << "Aja baja, nu skrev du fel, mellan 1 och 4 ska det va ett tal. " << endl;
}
}

cout << " " << endl;
cout << " " << endl;
cout << " " << endl;
cout << " " << endl;
system("pause");
return 0;
}

???

ren
Kommer du hit ofta?
Medlem
Forum Posts: 833
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
809464
December 30, 2004 - 3:45 pm
sp_Permalink sp_Print

tal 3 är odefinierat när du stöter på while-loopen första gången.

Sätt

int tal3=1;

eller något liknande,fråga efter tal 3 innan du går in i loopen eller ändra loopen till en do-while-loop.

Tovedal
Kommer du hit ofta?
Medlem
Forum Posts: 282
Member Since:
June 29, 2004
sp_UserOfflineSmall Offline
809500
December 30, 2004 - 4:43 pm
sp_Permalink sp_Print

nja.. då blir det ingen loop istället...

Chewie
Kommer du hit ofta?
Medlem
Forum Posts: 1516
Member Since:
September 13, 2001
sp_UserOfflineSmall Offline
809564
December 30, 2004 - 5:27 pm
sp_Permalink sp_Print

Tovedal wrote: nja.. då blir det ingen loop istället...

Den måste vara initierad första gången du kommer till loopen, så du har inte så många val.

Lite tips:

Får jag rekomendera en "switch-sats"., alla dessa if else osv är mycket röriga.
Dessutom gör du samma saker flera gånger, kanske är läge för en funktion. tex

void printAns( double svar ){
cout << "Svar: " << svar << endl;
}

Sätt "int" framför main(), eller ev void och ta bort "return 0".
Bryt upp koden lite, sätt inte flera satser på samma rad.
Din sista else kommer aldrig att inträffa.

Det jag kommer på just nu, kanske orkar kolla lite nogrannare senare.

ren
Kommer du hit ofta?
Medlem
Forum Posts: 833
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
809635
December 30, 2004 - 6:55 pm
sp_Permalink sp_Print

Chewie wrote: Din sista else kommer aldrig att inträffa.

Jådo, visst kommer det att inträffa (om man lagar programmet så att den går in i loopen) om man skriver in något tal som är minre än 1 eller större än 4.
Alla test i if-satserna kommer att ge false och man kommer till else-satsen.

Tovedal
Kommer du hit ofta?
Medlem
Forum Posts: 282
Member Since:
June 29, 2004
sp_UserOfflineSmall Offline
809662
December 30, 2004 - 7:37 pm
sp_Permalink sp_Print

Chewie wrote: [quote=Tovedal]nja.. då blir det ingen loop istället...

Den måste vara initierad första gången du kommer till loopen, så du har inte så många val.

Lite tips:

Får jag rekomendera en "switch-sats"., alla dessa if else osv är mycket röriga.
Dessutom gör du samma saker flera gånger, kanske är läge för en funktion. tex

void printAns( double svar ){
cout << "Svar: " << svar << endl;
}

Sätt "int" framför main(), eller ev void och ta bort "return 0".
Bryt upp koden lite, sätt inte flera satser på samma rad.
Din sista else kommer aldrig att inträffa.

Det jag kommer på just nu, kanske orkar kolla lite nogrannare senare.

okej men faktiskt så har jag inte den blekaste hur jag ska fixa den där switch tjosan, vars ska den stå och vad ska den byta ut???

ren
Kommer du hit ofta?
Medlem
Forum Posts: 833
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
809675
December 30, 2004 - 7:58 pm
sp_Permalink sp_Print

Tovedal wrote:
okej men faktiskt så har jag inte den blekaste hur jag ska fixa den där switch tjosan, vars ska den stå och vad ska den byta ut???

byt ut


if (tal3 == 1)
{
svar = tal1 + tal2;
cout << "Svar: " << svar << endl;
}
else if (tal3 == 2)
{
svar = tal1 - tal2;
cout << "Svar: " << svar << endl;
}
else if (tal3 == 3)
{
svar = tal1 * tal2;
cout << "Svar: " << svar << endl;
}
else if (tal3 == 4)
{
svar = tal1 / tal2;
cout << "Svar: " << svar << endl;
}
else
{
cout << "Aja baja, nu skrev du fel, mellan 1 och 4 ska det va ett tal. " << endl;
}

till


switch(tal3)
{
case 1:
svar = tal1 + tal2;
cout << "Svar: " << svar << endl;
break;
case 2:
svar = tal1 - tal2;
cout << "Svar: " << svar << endl;
break;
case 3:
svar = tal1 * tal2;
cout << "Svar: " << svar << endl;
break;
case 4:
svar = tal1 / tal2;
cout << "Svar: " << svar << endl;
break;
default:
cout << "Aja baja, nu skrev du fel, mellan 1 och 4 ska det va ett tal. " << endl;
}
Chewie
Kommer du hit ofta?
Medlem
Forum Posts: 1516
Member Since:
September 13, 2001
sp_UserOfflineSmall Offline
809757
December 30, 2004 - 9:45 pm
sp_Permalink sp_Print

ren wrote:
Jådo, visst kommer det att inträffa (om man lagar programmet så att den går in i loopen) om man skriver in något tal som är minre än 1 eller större än 4.
Alla test i if-satserna kommer att ge false och man kommer till else-satsen.

Så sant så.

Chewie
Kommer du hit ofta?
Medlem
Forum Posts: 1516
Member Since:
September 13, 2001
sp_UserOfflineSmall Offline
809763
December 30, 2004 - 9:50 pm
sp_Permalink sp_Print

Liten rekomendation till.
Byt ut

 while (tal3 > 0 && tal3 < 5) 

Till ngt liknande detta.

bool done = false;
while( !done ){
// switch å allt annat som du ville ha i loopen här.
// för att gå ur loopen kan du ha ett till alternativ (5)
// case 5: done = true; break;
}

Då slipper du initiera tal3, om du nu inte ville detta.

Tovedal
Kommer du hit ofta?
Medlem
Forum Posts: 282
Member Since:
June 29, 2004
sp_UserOfflineSmall Offline
810045
December 31, 2004 - 7:46 am
sp_Permalink sp_Print

okej tack det funka 😀 !'

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 694
Currently Online:
Guest(s) 37
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL