Permalänk

Villkorssats, c++

jo tjena
Ska göra denna upgift men kommer inte längre än såhär, HJÄLP PLS
"För att vid en deklaration få göra avdrag för dubbel bosättning krävs det att avståndet till arbetet överstiger 50km och att arbetet vara högst ett år för ensamstående och tre år för sammanboende.
Gör ett program som låter användaren mata in data och för svar om den har rätt till skatteavdrag"

#include <iostream> #include <string> using namespace std; int main() { setlocale( LC_ALL, "" ); int avs; cout << "Hur långt har du till jobbet i km?: " << endl; cin >> avs; string sats1; cout << "Är du ensamstående och har arbete högst ett år?" << endl; getline(cin, sats1); if (avs >=50 && sats1 == "ja") { cout << "JADU" << endl; } else { cout << "Du har INTE rätt till skatteavdrag!" << endl; } system ("pause"); return 0; }

Visa signatur

Processor: Amd fx 4100 Klockad till 4,3ghz. Graffekort: R9 280x Mobo: ASUS M5A99X EVO R2.0 Chassi: Moddat scaleo x. RAM: Corsair Vengence 16gb 1600mhz. SSD: NADA HDD: 1TB WesternDigital Nätagg: Corsair CX 750M
Logitch G430 7.1 , Func KB460 , Razer Imperator
Hata förfan inte på mitt agg, det funkar fint!

Permalänk
Medlem

Vad jag kan se så lagras inte din sträng korrekt, en minimal ändring:

#include <iostream> #include <string> using namespace std; int main() { setlocale( LC_ALL, "" ); int avs; cout << "Hur långt har du till jobbet i km?: " << endl; cin >> avs; string sats1; cout << "Är du ensamstående och har arbete högst ett år?" << endl; cin >> sats1; if (avs >=50 && sats1 == "ja") { cout << "JADU" << endl; } else { cout << "Du har INTE rätt till skatteavdrag!" << endl; } system ("pause"); return 0; }

Edit: Du bör också lusläsa uppgiften så du är säker på om det skall vara >= 50 eller >50 etc. Resten bör inte vara något problem om du lägger till en else if med rätt villkor.

Permalänk

Har nu fått det att funka skapligt, men om jag matar in avstånd under 50 och svarar ja på ensammstående får jag fortfarande rätt till skatteavdrag, vad ska jag göra istället?

#include <iostream> #include <string> using namespace std; int main() { setlocale( LC_ALL, "" ); int avs; cout << "Hur långt har du till jobbet i km?: " << endl; cin >> avs; string sats1; cout << "Är du ensamstående och har arbete högst ett år?" << endl; cin >> sats1; string sats2; cout << "Är du sammanstående och har arbete högst tre år?" << endl; cin >> sats2; if (avs >=50 && sats1 == "ja" || sats2 == "ja") { cout << "Du har rätt till skatteavdrag!" << endl; } else { cout << "Du har INTE rätt till skatteavdrag!" << endl; } system ("pause"); return 0; }

Visa signatur

Processor: Amd fx 4100 Klockad till 4,3ghz. Graffekort: R9 280x Mobo: ASUS M5A99X EVO R2.0 Chassi: Moddat scaleo x. RAM: Corsair Vengence 16gb 1600mhz. SSD: NADA HDD: 1TB WesternDigital Nätagg: Corsair CX 750M
Logitch G430 7.1 , Func KB460 , Razer Imperator
Hata förfan inte på mitt agg, det funkar fint!

Permalänk
Medlem
Skrivet av poppeskoglund:

Har nu fått det att funka skapligt, men om jag matar in avstånd under 50 och svarar ja på ensammstående får jag fortfarande rätt till skatteavdrag, vad ska jag göra istället?

Prova något liknande detta:

if (avs >=50 && (sats1 == "ja" || sats2 == "ja"))

Det betyder att avståndet ska vara minst 50, samt att antingen sats1 eller sats2 måste vara "ja".
Som du har skrivit så betyder det att avstånd ska vara över 50 och sats1 ja, eller att sats 2 är ja frånskilt de andra villkoren.

Permalänk
Skrivet av poppeskoglund:

Har nu fått det att funka skapligt, men om jag matar in avstånd under 50 och svarar ja på ensammstående får jag fortfarande rätt till skatteavdrag, vad ska jag göra istället?

#include <iostream> #include <string> using namespace std; int main() { setlocale( LC_ALL, "" ); int avs; cout << "Hur långt har du till jobbet i km?: " << endl; cin >> avs; string sats1; cout << "Är du ensamstående och har arbete högst ett år?" << endl; cin >> sats1; string sats2; cout << "Är du sammanstående och har arbete högst tre år?" << endl; cin >> sats2; if (avs >=50 && sats1 == "ja" || sats2 == "ja") { cout << "Du har rätt till skatteavdrag!" << endl; } else { cout << "Du har INTE rätt till skatteavdrag!" << endl; } system ("pause"); return 0; }

Du har satt in || som betyder eller, båda ska vara sant så byt ut || mot &&

Visa signatur

Chassi: Cooler Master HAF X 942 CPU: Intel 3770k @ 4.2 Ghz CPU Kylare: Corsair H80 Ram:16 Gig Balistic X 1600 MhzGPU: Sapphire Radeon R9 290X med Arctic Accelero Xtreme MB: MSI Z77A-GD65 PSU: Chieftec Nitro 750w 80+ Bronze SSDer: Crucial M4 64gb + 2st KINGSTON SSDNOW V+200 128gb i Raid 0Hårddiskar: 2st WD Black 1TB i raid 0 + en WD Green 2TB

Permalänk
Skrivet av Kiane:

Prova något liknande detta:

if (avs >=50 && (sats1 == "ja" || sats2 == "ja"))

Det betyder att avståndet ska vara minst 50, samt att antingen sats1 eller sats2 måste vara "ja".
Som du har skrivit så betyder det att avstånd ska vara över 50 och sats1 ja, eller att sats 2 är ja frånskilt de andra villkoren.

Tackar,ja det funkade, det var visst så enkelt

Visa signatur

Processor: Amd fx 4100 Klockad till 4,3ghz. Graffekort: R9 280x Mobo: ASUS M5A99X EVO R2.0 Chassi: Moddat scaleo x. RAM: Corsair Vengence 16gb 1600mhz. SSD: NADA HDD: 1TB WesternDigital Nätagg: Corsair CX 750M
Logitch G430 7.1 , Func KB460 , Razer Imperator
Hata förfan inte på mitt agg, det funkar fint!

Permalänk
Medlem
Skrivet av Nickieponken:

Du har satt in || som betyder eller, båda ska vara sant så byt ut || mot &&

En liten fråga på det, så det är alltså möjligt att vara ensamstående och sammanstående samtidigt?