Hulp nodig bij simpel C++ project

  • Onderwerp starter Onderwerp starter Regno
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Regno

Gebruiker
Lid geworden
26 jul 2010
Berichten
57
Hee allemaal!

Ik ben sinds twee dagen bezig met wat tutorials en boeken C++ door te lezen. Naast het lezen ben ik al direct een beetje aan de slag gegaan met een projectje:P

Ik wil een simpele "cijferaar" maken: Je voert het maximaal te behalen punten en je behaalde punten in. Dan rekent het programmatje via (x/y)*9+1 uit wat je cijfer is.

Dit is wat ik tot nu toe heb:
[CPP]// Een simpel programma om je cijfer uit te rekenen

#include <iostream>
using namespace std;
int main()
{
int behpunt;
int maxpunt;

cout << "\nWat was het maximaal aantal punten te behalen? ";
cin >> maxpunt;
cout << "\nWat was jou aantal behaalde punten? ";
cin >> behpunt;

int a, b;
int cijfer;

maxpunt = a;
behpunt = b;
cijfer = (b/a)*9+1;

return 0;

}[/CPP]

Nu krijg ik als foutmelding als ik het programma start: Run time Check failure - The variable 'a' is being used without being initialized.

Wat is er verkeerd en waarom?

Alvast bedankt!
 
Ik denk het stukje op regel 18 en 19. Zoals het er nu staat, kopieer je de waarde van a en b in (resp.) maxpunt en behpunt.

Ik denk dat je dit dus om moet draaien: de waarde van maxpunt en behpunt moeten (resp.) naar a en b gekopieerd worden.

Overigens kan je a en b ook niet gebruiken, je hebt maxpunt en behpunt immers al?
 
Bedankt, ik ben nu een stapje dichterbij. Toch ben ik er nog niet helemaal. Ik heb het laatste stukje nu zo gemaakt:

[CPP] int a, b;
int cijfer;

a = maxpunt;
b = behpunt;
cijfer = (b/a)*9+1;
cout << "Cijfer: " << cijfer << endl;

return 0;

}[/CPP]

Nu is er geen error als ik het programma gebruik. Maar de uitkomsten kloppen nog niet echt. Als ik iets invul komt er bijna altijd -> Cijfer: 1 uit...
 
Door te debuggen kom je daar wel achter vermoed ik. Print (cout) eens je "a" en "b", voordat je het getal print.
 
Momenteel verlies je de waardes achter de komma bij de deling en krijg je dus iets als: (1/3)+1 = 0+1
 
Hmm ok. Het is nog niet zo makkelijk als ik dacht, hehe.

Maar hoe voorkom ik dat ik dus cijfers achter de komma kwijtraak?
 
Lang geleden voor mij :D
Mijn eerste ingeving: casten naar float. Op internet lees ik dat dat ook werkt, ook zou "/ 9.0" moeten werken (let op de .0).

Edit: wat CoD zegt dus ^^ :D
 
Laatst bewerkt:
Hartstikke bedankt! Ik heb nu het einde zo gemaakt:
[CPP] double a, b;
double cijfer;

a = maxpunt;
b = behpunt;

cijfer = (b/a)*9+1;
cout << "Cijfer: " << cijfer << endl;

return 0;

}[/CPP]

Om het te perfectioneren heb ik 'cijfer' ook in double gezet, waardoor het cijfer ook significant werd!:D Bedankt, mn eerste projectje is af!:D

Btw het enige verschil tussen float en double, is dat float 7 cijfers significant is en double 15?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan