Forum huvudsida -> Programmering -> Problem med miniräknare i C++
Sidor: 1
plökum | 20:13 - 10:e Augusti 2010 | Post #1 | |
Medlem Inlägg: 2 Skicka PM |
Som titeln lyder, jag har ett problem med min miniräknare. Antagligen ett enkelt fel då jag är en väldigt färsk c++ programerare. Här är koden: #include <iostream> using namespace std; int main() { int tecken; int add; int add2; int summa; cout << "Skriv det fx94rsta talet: " << endl; cin >> add; cout << "Vx84lj rx84kne sx84tt: " << endl; cin >> tecken; cout << "Skriv det andra talet: "; cin >> add2; switch (tecken) { case '+': summa = add + add2; case '-': summa = add - add2; case '*': summa = add
summa = add / add2; } cout << "Det blir: " << summa; cin.ignore(225,' '); cin.get(); return 0; } Problemet är att när man har skrivit in sitt räknesätt så stängs rutan Tacksam för svar Mvh plökum |
Vitdom | 21:09 - 10:e Augusti 2010 | Post #2 | |
Medlem Inlägg: 71 Skicka PM |
Felet är att du deklarerar tecken som int. Tecken som '+' lagras som datatypen char. Så skriver du char tecken; istället så ska det fungera. Hittade annars ett annat fel i din switch-sats. Efter varje fall så brukar man lägga till en break-sats för att hoppa ur switch-satsen, så att inte nästa fall exekveras. Så här: case '+': summa = add + add2; break; Det som händer är att switch-satsen börjar vid motsvarande case(fall) som bestäms av tecken. Därefter kör den vidare, och exekverar nästa satser; om den nu inte träffar på en break-sats som hoppar ut ur switch-satsen. -------------------------
|
plökum | 21:22 - 10:e Augusti 2010 | Post #3 | |
Medlem Inlägg: 2 Skicka PM |
Tack för hjälpen! Nu fungerar den! Men hur gör jag pm jag vill att den ska fråga om man vill köra programmet igen? Har aldrig riktigt fattat det där med looparna. Mvh plökum |
skogstokerier | 09:32 - 27:e Augusti 2010 | Post #4 | |
Medlem Inlägg: 2 Skicka PM |
En annan grej är att du sparar svaret i en heltalsvariabel. Eftersom det är upp till implementeringen att välja om den ska avrunda upp eller trunkera flyttal när de stoppas in i heltalsvariabler vet man inte riktigt hur programmet kommer räkna när du dividerar två tal som inte ger ett heltal. Bättre använda double summa; while-loopar skrivs som: while (villkor) satser satser kan ersättas med en enda rad som avslutas med semikolon eller med flera måsvingeinslutna dito som inte avslutas med semikolon. edit: blev lite syftningsfel... menade såklart att måsvingen inte skulle följas av semikolon, inte att varje sats skulle vara utan semikolon. Exempelvis kan du ju ha: string choice = "ja"; //initialisera den till ja, annars börjar inte loopen while (choice == "ja" || choice == "JA" || choice == "Ja") { //nästan hela ditt program cout << "vill du kalkylera mera? "; cin >> choice; } //typ return 0; om du brukar avsluta main med det om något av villkoren uppfylls (=TRUE) så kommer loopen börja om. Om man svarar vad som helst annars så avslutas loopen och programmet går vidare till exempelvis retursatsen eller annat. utan garantier för att min kod funkar 0:) Senast redigerad 11:53 - 28:e Augusti 2010 |
Sidor: 1
Forum huvudsida -> Programmering -> Problem med miniräknare i C++
Du får inte posta i den här tråden | Till toppen
Datum
2024-12-23 00:15
Vecka: 52
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.