getal vermenigvuldigen door *, /, -, + in char

Status
Niet open voor verdere reacties.

sander the man

Gebruiker
Lid geworden
7 jun 2007
Berichten
94
Code:
                            double numb1;
                            double numb2;
                            double som;
                            char product;
                            cout << "eerste nummer:";
                            cin >> numb1;
                            cout << endl;
                            cout << "/, *, - of +:";
                            cin >> product;
                            cout << endl;
                            cout << "tweede getal:";
                            cin >> numb2;
                            cout << endl;
                            som = numb1; product; numb2;
                            cout << numb1 << product << numb2 << "=" << som;
                            cout << endl;
                            system("PAUSE");
die code doet het opzich goed maar 1 foutje hij vraagt om 2 getallen eerst 1 dus ik type 55 daarna vraagt hij om een /, *, -, + dus ik type * daarna vraagt hij om een 2e getal dus ik type 5 dan zegt hij heel goed 55*5=55 het antwoord klopt niet :confused: ik denk dat het komt omdat hij die /, *, -, + als een char ziet (wat logisch is) maar hoe maak ik het zo dat hij het wel doet?
 
Je probleem is dat je denkt dat je een variabele kunt gebruiken als een bewerking. Als je even 55, * en 5 invult in je programma krijg je dit:

Code:
som = 55;
'*';
5;

C++ werkt niet op die manier. in de eerste regel wijs je de waarde 55 toe aan de variabele som. De puntkomma geeft het einde van de regel aan. De volgende twee regels doen in feite helemaal niets. Er is dankzij de puntkomma's geen enkel verband tussen de drie regels, maar het probleem ligt dieper.

er is een groot verschil tussen het karakter '*' en de bewerking *. Als je het programma vertaalt naar machinetaal verandert er aan de eerste niets, maar de tweede verandert in een speciale bewerking die twee getallen vermenigvuldigt. De oplossing is enigzins ingewikkelder.

Code:
double num1, num2, sum;
char operation;

cout << "eerste nummer:";
cin >> num1
cout << "\n/, *, - of +:";
cin >> operation;
cout << "\ntweede getal:";
cin >> num2;
switch(operation)
{
    case '+':
        som = num1 + num2;
        break;
    case '-':
        som = num1 - num2;
        break;
    case '*':
        som = num1 * num2;
        break;
    case '/':
        som = num1 / num2;
        break;
}

cout <<endl << num1 << operation << num2 << "=" << som;
system("PAUSE");
 
Je zou van de tokens ook een enum kunnen maken. Dat maakt het wat leesbaarder.

Code:
enum T{ 
     PLUS  = '+', 
     MIN   = '-',
     KEER  = '*',
     DELEN = '/'
};

// ...
switch(operation)
{
   case PLUS:
            // ...
   case MIN:
           // ...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan