Forum: Problem med miniräknare i C++

Forum huvudsida -> Programmering -> Problem med miniräknare i C++

Sidor: 1

Till botten

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
  • add2;
case '/':
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 rutanSmiley

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++
Atom feed

Du får inte posta i den här tråden | Till toppen