Archief - C++

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

QplQyer

Legacy Member
EA lover zei:
Ik kweeni, stap 1 begint al met klassen enzo maar voor kerst ga ik me wel een heel dik/goed boek aanschaffen ( iemand tips??).
Nu had ik er nog een probleemke mee. Als ik dat bestand in visual C++ compileer en uitvoer dan werkt het , maar als ik naar de map oefening en daar naar debug ga, dan zie ik daar mijn "gemaak" bestandje staan. Ik dubbelklik erop : het opent in DOS en ik typ bv. 8 en 9 in. Ik duw op enter en dan sluit hij automatisch af. Heeft iemand hier een verklaring voor?
Ja.
Windows sluit automatisch de command prompt als het programma beëindigd is, wanneer het programma aan het einde van void main() komt, is het dus beëindigd, en je zal de output niet meer zien staan.

Een mogelijke oplossing is om gewoon naar start->uitvoeren te gaan, daar 'cmd' (zonder quotes) in te tikken, op enter te duwen en dan via dos naar je mapje te gaan en gewoon de bestandsnaam.exe in te tikken om em uit te voeren.
dus bv:
Code:
C:\> cd c:\program files\microsoft visual studio\Projects\Debug
C:\> MijnOefening.exe

Krueger

Legacy Member
Ansur zei:
Des te sneller je in OO begint te denken, the better :)
Bwah, het lijkt mij toch logischer om eerst te beginnen met simpelere dingen zoals: for,while,if dan naar arrays en pointers gaan en dan pas aan klasses te beginnen. Nouja, elk boek zal wel zijn eigen manier van aanpakken hebben zeker?

killgore

Legacy Member
Krueger zei:
Bwah, het lijkt mij toch logischer om eerst te beginnen met simpelere dingen zoals: for,while,if dan naar arrays en pointers gaan en dan pas aan klasses te beginnen. Nouja, elk boek zal wel zijn eigen manier van aanpakken hebben zeker?
I agree, klasses zijn prachtig, maar core programming mag zeker niet vergeten worden. Zeker als beginner niet.

Tyfius

Legacy Member
EA lover zei:
Ik kweeni, stap 1 begint al met klassen enzo maar voor kerst ga ik me wel een heel dik/goed boek aanschaffen ( iemand tips??).
Nu had ik er nog een probleemke mee. Als ik dat bestand in visual C++ compileer en uitvoer dan werkt het , maar als ik naar de map oefening en daar naar debug ga, dan zie ik daar mijn "gemaak" bestandje staan. Ik dubbelklik erop : het opent in DOS en ik typ bv. 8 en 9 in. Ik duw op enter en dan sluit hij automatisch af. Heeft iemand hier een verklaring voor?

Code:
int main()
{
  /** al uw functieoproepen en andere bazaar */
  
  cin.get();
  // hierdoor wacht het programma op een invoer (meestal ENTER) voordat het afsluit
  return 0;
}

EA lover

Legacy Member
die code hier net boven, moet ik die gewoon vanonder erbij plakken?
wat bedoel je met "al uw functieoproepen en andere bazaar"?

Tyfius

Legacy Member
normaal heeft elke c++ programma een main functie, waarin ge al uw functies oproept. Daar vanonder gewoon bijplakken.

QplQyer

Legacy Member
Tyfius zei:
Code:
int main()
{
  /** al uw functieoproepen en andere bazaar */
  
  cin.get();
  // hierdoor wacht het programma op een invoer (meestal ENTER) voordat het afsluit
  return 0;
}
Jup dat was de andere methode om het te doen juist :)

Litheon

Legacy Member
nog een methode (enkel voor windows):

#include <windows.h>

en dan

system("PAUSE");

tis maar ter vervolediging

killgore

Legacy Member
Litheon zei:
nog een methode (enkel voor windows):

#include <windows.h>

en dan

system("PAUSE");

tis maar ter vervolediging
windows.h moet daarvoor niet noodzakelijk worden ge-included. Maar er zijn genoeg ansi/iso varianten voor jouw dingetje :), bv deze:
Code:
void pause()
{
	int input;
	cout << "Press [enter] to continue..." << endl;
	cin.clear();
    do
	{
		input = cin.get();
	}
	while(input != '\n' && input != EOF );
}

EA lover

Legacy Member
kan iemand mij dan eens de volledige code geven die ik moet ingeven zodat als je op enter duwt dat je dan nog eens kan ( code staat op de vorige pagina).
Telkens als ik één van jullie codes er gewoon vanonder bijplak dan geeft hij altijd een aantal errors.
Edit :
ik heb nu een code ingegeven :
cout << "Wilt u verder gaan? j/n ";
}

zodat hij op het einde vraagt met ja of nee. Ik duw op j maar hij sluit altijd onmiddelijk af.
Als ik naar de map debug ga en ik dubbelklik op test dan duw ik op enter om de einduitkomst te zien en dan sluit hij ook altijd af. Weet iemand hoe ik dit probleem kan verhelpen?

Tyfius

Legacy Member
erm, das ni zo simpel ze ma ge kunt het oplossen
bv:
Code:
int main()
{
  char checkagain;
  do {
    // hier dan alle dingen van uw programma
    
    cout << "Wilt u nog een keer?";
    cin >> checkagain;
   }
   while((checkagain == 'J') || (checkagain == 'j'));
}

zoiets, ongeveer

EA lover

Legacy Member
Hoe moet ik het dan doen? Zo dan :
//Oef1 : klassen en objecten
#include <iostream.h>

int main()
{
char checkagain;
do {//de klassedeclaratie
class Breuk
{
private:
int teller, noemer;//klassevariabelen
public:
void Ingeven(); //methoden
void Tonen();
double Waarde();
};

//de klassedefinitie
void Breuk::Ingeven()
{
cout<<endl<<"Geef de waarden van de teller en noemer door telkens 1 spatie open te laten:";
cin>>this->teller>>this->noemer;
}
void Breuk::Tonen()
{
cout<<endl<<"De breuk is : " <<this->teller<<"/"<<this->noemer<<endl;
}

double Breuk::Waarde()
{
return (double)teller/noemer; //(double) is nodig
}

//Het hoofdprogramma
void main()
{
Breuk B1;
B1.Ingeven();
B1.Tonen();
cout << "Wilt u nog een keer?";
cin >> checkagain;
}
while((checkagain == 'J') || (checkagain == 'j'));
}

Als ik dees test dan krijg ik 10 errors.

QplQyer

Legacy Member
Oh god NEE!

ten eerste een klasse declaratie stop je NOOIT of te nimmer in een lus, een lus stop je ENKEL in een functie (zoals bv main()).

wat je moet doen is:
(en copy-paste dit stuk niet botweg om daarna te komen zeggen dat het niet werkt, lees de errors die je krijgt en probeer ze op te lossen, dat is veel leerrijker + copy-paste is slecht, probeer te begrijpen wat dit stuk code doet, volledig!).
want ik kan hier fouten getikt hebben hoor ...
Code:
void main()
{
    char check;
    do {
         Break B1;
         B1.Ingeven ();
         B1.Tonen ();
         cout << "Wilt u nog een keer?";
         cin >> check;
     }
     while (check == 'J' || check == 'j')
}

En je klasse declaratie zet je daarboven in deze vorm dus:

Code:
class Breuk
{
private:
int teller, noemer;//klassevariabelen
public:
void Ingeven(); //methoden
void Tonen();
double Waarde();
};

//de klassedefinitie
void Breuk::Ingeven()
{
cout<<endl<<"Geef de waarden van de teller en noemer door telkens 1 spatie open te laten:";
cin>>this->teller>>this->noemer;
}
void Breuk::Tonen()
{
cout<<endl<<"De breuk is : " <<this->teller<<"/"<<this->noemer<<endl;
}

double Breuk::Waarde()
{
return (double)teller/noemer; //(double) is nodig
}
};

Je zet eveneens NOOIT een klassedeclaratie in een functie, dus je zet niet:

Code:
int main() {
class
}

en je mag maar één main functie hebben in je programma.

Ik stel voor dat je je boek toch nog maar wat doorleest vooraleer je aan de oefeningen begint, want het lijkt me dat je echt nog niet veel snapt van de basis van de programmeertaal, dus lees eerst het eerste hoofdstuk, maak dat je ALLES begrijpt en probeer dan de oefeningen en ga dan pas naar het volgende.
Te snel willen zijn is dodelijk als je wilt leren programmeren zonder enige ervaring.

Tyfius

Legacy Member
mss zeker vermelden dat die "double" nodig is omdat die breuk een komma waarde kan weergeven, en een int alleen gehele getallen weergeeft.
voordat ze daar weer gaan over struikelen :)

En uit ondervinding met verschillende GNU compilers heb ik ontdekt dat het beter is om int main() te gebruiken ipv void main(). Natuurlijk wel niet de return 0; vergeten op het einde om bijna helemaal foutloos te zijn.

En ik zou zeker ook nog, wat je ook wel in het boek zal lezen, zo snel mogelijk leren werken met private/public, constructors, new en delete. Anders heeft het niet veel nut dat je al OO gaat toepassen imo.

EA lover

Legacy Member
Weet iemand een goed boek waar ik visual C++ 6 kan uit leren? Liefst verkrijgbaar in de standaard boekhandel

Reck

Legacy Member
Zou je niet best beginnen met basis C++? (Aangenomen dat je met Visual C++ MFC/windows programming bedoelt)

Krueger

Legacy Member
EA lover zei:
Weet iemand een goed boek waar ik visual C++ 6 kan uit leren? Liefst verkrijgbaar in de standaard boekhandel
Aan de slag met c++ van Gertjan Laan vindek persoonlijk een zeer goed boek om c++ te beginnen leren vanaf 0. En je hebt weldegelijk een goed boek nodig, want die code die ja daar hebt neergezet : :eek:

Daarmee dat het volgens mij dus beter is om niet onmiddelijk met OO te beginnen, maar eerst met de basisbegrippen te beginnen.

Tyfius

Legacy Member
C++ grand cru, imo nog steeds een van de beste boekenreeksen die er zijn
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan