Permalänk
Medlem

c++ varför felar saldo

testat alla sorters möjlig varianter på kod NU !!!! blir knäpp VARFÖR FELAR SALDOT! Kan nån hjälpa suttit fast i 3 dagar

case 'u':
cout << endl;
cout << "Hur mycket vill du ta ut" << endl;
cin >> uttag;
saldo = saldo - uttag;

while (uttag < saldo) // Så länge uttag är mindre än saldo
{
cout << "Ditt saldo är för lågt" << endl;
cout << "Testa en annan summa" << endl;
cin >> uttag;
}
if (uttag >= saldo) // Om uttag är större eller lika med saldo
{
cout << uttag << " Kommer att dras från ditt saldo" << endl;
cout << endl;
}
cout << "[i]nsattning" << endl;
cout << "[u]ttag" << endl;
cout << "[s]aldo" << endl;
cout << "[r]antebetalning" << endl;
cout << "[a]vslut" << endl;
cin >> svar;

break;

Permalänk
Medlem

Om uttag är mindre än saldo är saldot för lågt?

Permalänk
Medlem
Skrivet av Rådström:

Om uttag är mindre än saldo är saldot för lågt?

ja eller ??? då ska den ju säga att det är för lågt eller e jag helt ute och cyklar

Permalänk
Medlem

Vad ditt program gör:
Användaren blir ombedd att ta ut pengar, användaren anger en summa, summan dras från kontot.

Därefter sker dina kontroller, där du till råga på allt har vänt på större än och mindre än-tecknet.

Permalänk
Medlem
Skrivet av Rådström:

Om uttag är mindre än saldo är saldot för lågt?

denna du mena eller
while (uttag < saldo) // Så länge uttag är mindre än saldo

Permalänk

hur felar det? datatyper? int?
Edit: haha missade totalt! pga kommentaren i koden. du vill ju kolla om saldo är mindre är uttag begäran! så tvärtom vad du gör nu
edit": och som nämndes nedar du drar av innan du testat summan.

Permalänk
Medlem

Jag ser två problem:

1) Du har vänt på > och <.
2) Du drar av uttag från saldo innan du jämför

Permalänk
Medlem
Skrivet av Jaevel:

Vad ditt program gör:
Användaren blir ombedd att ta ut pengar, användaren anger en summa, summan dras från kontot.

Därefter sker dina kontroller, där du till råga på allt har vänt på större än och mindre än-tecknet.

jag gjorde en while loop innan switch satsen trodde att den skulle täcka alla alternativ ska testa och vända och se vad som händer tack

Permalänk
Medlem
Skrivet av Panatin:

jag gjorde en while loop innan switch satsen trodde att den skulle täcka alla alternativ ska testa och vända och se vad som händer tack

du måste dessutom flytta saldo-avdraget till efter din while-loop

Permalänk
Medlem

Som Rådström skrev, du verkar ha vänt på hur > < ska vara. Man får bara ta ut pengar om uttaget man vill göra är större än ens saldo.

Permalänk
Medlem

Ni e fan BÄST LÄSTE SIG HUR BRA SOM HELST!!!

NI E GULD ATT HA OCH FRÅGA UPPSKATTAR... VART FAST I FLERA DAGAR AV EN SÅN HÄR GREJ HAHAHA

case 'u':
cout << endl;
cout << "Hur mycket vill du ta ut" << endl;
cin >> uttag;

while (uttag > saldo)
{
cout << "Ditt saldo är för lågt" << endl;
cout << "Testa en annan summa" << endl;
cin >> uttag;
}

if (uttag <= saldo)
{
cout << uttag << " Kommer att dras från ditt saldo" << endl;
cout << endl;
}

saldo = saldo - uttag;

cout << "[i]nsattning" << endl;
cout << "[u]ttag" << endl;
cout << "[s]aldo" << endl;
cout << "[r]antebetalning" << endl;
cout << "[a]vslut" << endl;
cin >> svar;

break;

Permalänk
Medlem
Skrivet av Jaevel:

du måste dessutom flytta saldo-avdraget till efter din while-loop

!!!! TACK sån liten sak men så viktig hahahaha

Permalänk

ibland är det bra att göra debug antingen via debugger eller göra en massa extra print/cout och kolla så allt rör sig som man tänkt. så är det lite lättare att se fel som dessa

Permalänk
Medlem

Så länge "uttag > saldo" gäller så kommer while-loopen köras om och om igen. När while-loopen lämnas så innebär det alltså att "uttag <= saldo" gäller. If-satsen behövs alltså inte.

Permalänk
Medlem
Skrivet av PeCe:

Så länge "uttag > saldo" gäller så kommer while-loopen köras om och om igen. När while-loopen lämnas så innebär det alltså att "uttag <= saldo" gäller. If-satsen behövs alltså inte.

Ok tack har ett problem jag stött på många gånger vill klämma in för mycket kod hehe får börja bli latare hahaha hitta enklare lösningar helt enkelt

Permalänk
Medlem

@Panatin: Att du skriver ut menyn i slutet av ett case verkar också lite underligt. Du har inte visat hela din kod, men jag gissar att du gjort det väldigt vanliga nybörjarfelet att skriva något liknande detta:

int main() { // Skriv ut meny, läs in svar while (...) { switch (svar) { case ...: // kod // Skriv ut meny, läs in svar break; case ...: // kod // Skriv ut meny, läs in svar break; ... } } }

Vad du istället borde göra i så fall är att flytta menyn och inläsningen till början av while-loopen, så att du endast har den på ett enda ställe. En av de gyllene reglerna inom programmering är DRY = Don't Repeat Yourself. Om du upprepar samma kod flera gånger så blir det svårare att ändra på den senare.

Permalänk
Medlem
Skrivet av perost:

@Panatin: Att du skriver ut menyn i slutet av ett case verkar också lite underligt. Du har inte visat hela din kod, men jag gissar att du gjort det väldigt vanliga nybörjarfelet att skriva något liknande detta:

int main() { // Skriv ut meny, läs in svar while (...) { switch (svar) { case ...: // kod // Skriv ut meny, läs in svar break; case ...: // kod // Skriv ut meny, läs in svar break; ... } } }

Vad du istället borde göra i så fall är att flytta menyn och inläsningen till början av while-loopen, så att du endast har den på ett enda ställe. En av de gyllene reglerna inom programmering är DRY = Don't Repeat Yourself. Om du upprepar samma kod flera gånger så blir det svårare att ändra på den senare.

Japp exakt det felet jag gjort har bara programmerat i 2 veckor så det e många saker jag än inte har riktig koll på Heheh

Tacksam att ni säger till mig och tipsar lär mig skit mycket av er TACK!

Permalänk
Medlem
Skrivet av Panatin:

Japp exakt det felet jag gjort har bara programmerat i 2 veckor så det e många saker jag än inte har riktig koll på Heheh

Tacksam att ni säger till mig och tipsar lär mig skit mycket av er TACK!

Jag tror att du hade förstått själv vad som var fel i koden om du hade frågat din lärare om hjälp.
En bra lärare ber dig förklara vad din kod gör, och när du förklarar den kommer du aldrig lyckas förklara varför du drar saldot innan din whilesats.

Detta kan man nyttja själv. Berätta vad din kod gör för dig själv eller för din gummianka.
Denna metodik kallas rubberducking och är ett jättebra verktyg inom programmering