Kan iemand dit debuggen

Status
Niet open voor verdere reacties.

brandweekid

Nieuwe gebruiker
Lid geworden
21 nov 2006
Berichten
4
ik heb een programma gemaakt met C++ maar als ik hem opstart en ik voer 2 nummers in sluit hij af

Dit is de code:
Code:
#include <iostream>
using namespace std;

int main()
{  cout << "Geef twee gehele getallen: ";
   int a, b;
   cin >> a >> b;        // A en B worden gelezen
   int som = a + b, verschil = a - b,
       u = som * som, v = verschil * verschil;
   cout << "Kwadraat van som     : " << u << endl;
   cout << "Kwadraat van verschil: " << v << endl;
   return 0;
}

Kan iemand a.u.b. de fout vinden:( :eek: :)
 
Dat ligt gewoon aan C++/de compiler.

Zet aan het einde eens een cin.get() (volgens mij) en je uitvoer blijft staan :)
 
Ik heb het toegevoegd maar hij blijft maar afsluiten :S
ik heb dat cin.get(); op veel plaatsten geprobeert maar hij blijft maar af sluiten :S
 
Laatst bewerkt:
Bedankt het is gelukt :D als je het resultaat wil zien

Hier is het
Download Hier
Typ bijv. in 100 10 en hij telt het op en rekent kwadraat uit en hij trekt ook af en rekent nog een keer kwadraat uit.

Groeten Menno
 
Ok ik zet hem nu op opgelost maar eerst wil ik even voor de mensen die dit ook graag willen maken de werkende code neerzetten:
Ik heb ook een uitgebreide versie van me programma.
Download Hier

Code:
/* Dit script is gemaakt door menno wolvers
*/
#include <iostream>
using namespace std;

 
int main()
{  cout << "Geef twee gehele getallen: ";
   int a, b;
   cin >> a >> b;        // A en B worden gelezen 
   int som = a + b, verschil = a - b,
       u = som * som, v = verschil * verschil;
   int x = a + b;
   int y = a - b;
   int g = a * b;
   cin.get();
   cout << "Vermenigvuldigd      : " << g << endl;
   cout << "Afgetrokken          : " << y << endl;
   cout << "Opgeteld             : " << x << endl;
   cout << "Kwadraat van som     : " << u << endl;
   cout << "Kwadraat van verschil: " << v << endl;
   cin.get();
   return 0; 
}
 
zit nog een foutje in :p kwadraat :

x² = vierkantswortel y

x = -(vierkantswortel y) of x = vierkantswortel y

:p wil niet moeilijk doen ofzo, maar wilt iemand jouw programma gebruiken om zijn vergelijking op te lossen zou hij nogal eens in de problemen komen als hij volledig vertrouwt op je programma
 
return 0; laat aan het besturingssysteem weten dat het programma succesvol beïndigd werd, en bijgevolg dus mag afgesloten worden.

Over cin en cin.get()

----------
-- cin --
----------
wanneer je inleest met cin (dit is een stream) wordt dit eerst gebufferd.wanneer jij dat dan naar een variabele opslaat lees je eigenlijk uit die buffer. cin is standaard ingesteld zodat witruimte geneegeerd wordt.

neem volgende code:
Code:
int i1, i2;
cin >> i1 >> i2;

met gebruikersinvoer:
Code:
12
123

geeft eerst een invoerbuffer met als inhoud:
Code:
'1', '2', '\n', '1', '2', 3', '\n'

volgende code wordt uitgevoerd:
Code:
cin >> i1;

met als resultaat dat i1==12 en de invoerbuffer is nu:
Code:
'\n', '1', '2', 3', '\n'

dan wordt volgende code uitgevoerd:
Code:
(cin) >> i2;

cin negeert de witruimte ('\n') en gaat verder met lezen, met als resultaat dat i2==123 en de invoerbuffer wordt
Code:
'\n'

------------------
-- cin.get() --
------------------
cin.get() haalt 1 karakter uit de invoerbuffer. wanneer er niets in de invoerbuffer zit, wacht dit statement dus tot er iets inkomt, en houdt zo je venster open.

Als je zeker wil zijn dat je venster openblijft kan je na elk cin-statement cin.get() gebruiken, maar je merkt wel dat dat in grote applicaties veel extra codering vraagt.
Daarom raad ik je aan volgende code te gebruiken, ze maakt gebruik van getline(), een functie die een hele lijn uit de invoerbuffer inleest, INCLUSIEF de witruimte die volgt. Het laat je buffer dus leeg achter.

Deze code komt helemaal onderaan je main
Code:
string rest; //om de inhoud van de buffer te kunnen wegschrijven
getline(cin, rest);  //haalt een lijn uit cin (de invoerbuffer) en kopieërt die naar de string rest
cout << "Druk op een toets om af te sluiten... ";
cin.get(); //wacht op het binnenkrijgen van een karakter
return 0; //sluit af

Hopelijk geeft dit je wat meer inzicht,
--Johan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan