C++ error rekenmachine

Status
Niet open voor verdere reacties.

BugMenOT2

Gebruiker
Lid geworden
23 nov 2006
Berichten
296
Hallo

Ik krijg een totaal van 4 dezelfde errors bij deze code
Code:
non-lvalue assignment

in het rood heb ik aangeduid in mijn code welke lijnen

Code:
#include <iostream>
using namespace std;

//variabelen
int a;
int b;
int c;
int d;

//prototypes van de  functies
void menu();
int optellen(int, int);
int aftrekken(int, int);
int vermenigvuldigen(int, int);
int delen(int, int);

int main ()
{

do
 {
  //rekenmachine menu
  cout << " ";
  cout << "1. Optellen " << endl;
  cout << "2. Aftrekken " << endl;
  cout << "3. Vermenigvuldigen " << endl;
  cout << "4. Delen " << endl;
  cout << "5. Exit " << endl;
  cout << " " << endl;
  cout << "Maak een keuze: ";
  cin >> d;

 switch(d)
 {
  case 1:
       {
        menu();
        optellen(a, b);
        cout << a << " + " << b << " = " << c << endl;
        }
  case 2:
       {
        menu();
        aftrekken(a, b);
        cout << a << " - " << b << " = " << c << endl;
        }
  case 3:
       {
        menu();
        vermenigvuldigen(a, b);
        cout << a << " + " << b << " = " << c << endl;
        }
  case 4:
       {
        menu();
        delen(a, b);
        cout << a << " / " << b << " = "  << c << endl;
        }
  case 5:
       {
        return false;
        }
  }
}
  while(d!=5);


}

//implementatie van de functies
void menu()
{
 cout << "1: ";
 cin >> a;
 cout << "2: ";
 cin >> b;
 }

int optellen(int a, int b)
{
 [COLOR="red"]a+b=c;[/COLOR]
 }

int aftrekken(int a, int b)
{
 [COLOR="red"]a-b=c;[/COLOR]
 }

int vermenigvuldigen(int a, int b)
{
 [COLOR="red"]a*b=c;[/COLOR]
 }

int delen(int a, int b)
{
 [COLOR="Red"]a/b=c;[/COLOR]
 }

Zou iemand me hierbij kunnen helpen.
Op google vind ik hier bijna niets over.

Groetjes,

Benny
 
Je doet het eigenlijk verkeerd om: c = a+b;

Verder zijn er nog wel wat dingen aan te merken op je code. Het design even buiten beschouwing gelaten(dat komt later wel). Je declareert de functie's die het rekenwerk doen als het type int, terwijl deze functie's helemaal geen return-waarde hebben. En dus als void gedeclareerd zouden moeten worden. Verder worden de functie-parameters niet gewijzigd, en zou je ze dus als const kunnen declareren.

Code:
void optellen(const int a, const int b) 
{
 c = a+b;
}
 
bedankt voor je reactie

Het design even buiten beschouwing gelaten(dat komt later wel).

zo een opmerkingen krijg ik wel meer.
hoe zou ik deze aanpakken ?
bestaat hier iets voor(voor het netjes progrmmeren)

groeten
 
PHP:
switch(d)
 {
  case 1:
        menu();
        optellen(a, b);
        cout << a << " + " << b << " = " << c << endl;
        break;
  case 2:
        menu();
        aftrekken(a, b);
        cout << a << " - " << b << " = " << c << endl;
        break;
  case 3:
        menu();
        vermenigvuldigen(a, b);
        cout << a << " + " << b << " = " << c << endl;
        break;
  case 4:
        menu();
        delen(a, b);
        cout << a << " / " << b << " = "  << c << endl;
        break;
  case 5:
        return false;
   default:
       // error message     
  }
}

ik zou de case-switch in dit veranderen. Wat die van u zal gewoon alles uitvoeren vanaf het ingegeven getal. Geeft ge 2 in dan zal hij 2, 3, 4 en 5 uitvoeren. Ge zijt de breaks vergeten...

Voor netter code te schrijven moet je wat meer moeite doen. In principe is er niet echt mis met wat je schrijft. Alleen schrijf je nu C en geen C++. C is functioneel programmeren, wat je nu doet. Je kijkt wat je wil hebben en schrijft naargelang functies.

C++ echter is een objectieve georienteerde taal ( hoewel sommige puristen het hier niet altijd over eens zijn:). Dus je moet leren in klassen te denken en schrijven. Dit wil zeggen GEEN globale variabel. Deze dingen dus:

PHP:
//variabelen
int a;
int b;
int c;
int d;

En ook geen globale functies ( alle functies die ge gebruikt hebt ). Ik weet niet hoe of waar ge c++ hebt geleerd maar normaal gezien zou in klasse en instanties werken toch de nodige aandacht gehad moeten hebben. Het kan zijn dat je nog maar pas begint met c++? want in de meeste boeken leren ze in de eerste 50 blz. C aan.

Effective C++ is een goed boek waar bepaalde "huisregels" worden uitgelegd waardoor de code automatisch wat netter lijkt:).
 
Effective C++ is een goed boek waar bepaalde "huisregels" worden uitgelegd waardoor de code automatisch wat netter lijkt:).

Effective C++ is inderdaad wel een goed boek. (heb hem helaas nog niet helemaal uitgelezen, maar hij staat hier wel in m'n schap)

Verder vind ik het boek van Bjarne Stroustrup ook wel aan te raden. (The C++ programming language)

(Ik lees persoonlijk 't liefste een echt boek. Maar beide boeken zijn zonder problemen als e-book te vinden op 't net.)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan