I' m stuck again

Status
Niet open voor verdere reacties.

yanik

Gebruiker
Lid geworden
5 nov 2011
Berichten
316
Hopelijk zit ik bij de juiste topic.
Ik heb een vraag , beter nog, lees onderstaande code eerst:
#include <iostream>
using namespace std;
int main()
{
char ch;
cout << " Typ een woord zonder de letter e ";
cout << "en druk op Enter"<< endl;
do
{
ch=cin.get();
if(ch=='e')
{
cout << endl <<"Geen e intikken aub!'' <<endl;
while (cin.get() != '\n ');
break;
}cout << ch;

}while ( ch !=' \n ');
}
bovenstaande is dus de code.
Ik zoveel vragen: Ten alleerst, hoe kan een while statement zitten in een do statement zonder te zijn gescheiden van de do statement door accolades?
Waarorom zijn er 2 while statements?
Waarom de break voor de while statement?
In alle eerlijkheid: wat betekent deze code?
 
je geeft met "char ch" een variabele aan. Die maak je net aan. Daar kun je data in opslaan.

cout << "Typ een woord zonder de letter e"; dit is output van je code
cout << "en druk op Enter" << endl; spreekt voor zich

hier ga je iets doen zolang een voorwaarde waar is
do
{
ch=cin.get(); wat je invoert word in de variabele gezet van ch
if (ch=='e') als ch e is (nu moet je opletten want hier komt de fout)
{ moet dit uitgevoert worden
cout << endl << "Geen e intikken aub!" << endl;
while (cin.get() !='\n') zolang input geen enter (alsje de enter toets indrukt) bevat
break;
} cout << ch; dit laat je 'woord' zien

} while (ch!='\n')
}

nu komt het waarom hij niet werkt... er staat dat je een woord moet invoeren... terwijl hij de hele variabele checked....
dus als je een heel woord invoert zelfs als er een e inzit zal hij nog steeds een fout geven.
volgens mij als ik me niet vergis blijft de loop oneindig doorgaan totje een e invoert


de code betekent dat je een e in moet voeren en als je dat niet doet geeft hij een foutcode weer
 
laat me eerst even uitleggen...

if is een engels woord voor als

Als (een voorwaarde waar is)
{
dan moet dit uitgevoerd worden
}

if (cijfer < (minder dan teken) 10) als het ingevoerde cijfer minder dan 10 is dan {}

dus

if (cijfer < 1.0 || cijfer > 10.0)

betekent dus eigenlijk

Als (het ingevoerde cijfer kleiner is dan 1 OF (||) groter is dan 10)

ik hoop dat dit je een beetje op weg helpt
 
dit weet ik al, bedankt
 
Laatst bewerkt door een moderator:
while (cin.get() !='\n') zolang input geen enter (alsje de enter toets indrukt) bevat; en

while betekent in het nederlands zolang
dus zolang (cin.get != '\n' ) cin.get is wat je invoert... wat je intikt in je toetsenbord en dan op enter drukt... dat is cin.get()

!= betekent NIET
dus 1 != 10 betekent gewoon simpel... 1 is geen 10

dus

if (cin.get != '\n') als je invoer niet \n is dan voert hij het volgende uit.

\n is de enter toets... als je dus zonder iets in te voeren de entertoets indrukt dan gebeurt er wat tussen de {} staat



while (ch!='\n')

zolang ch niet \n is

\n is de enter toets...

dus als ch=cin.get betekent het dat als je niets invoert maar alleen de enter toets indrukt dat hij dan doet wat er tussen de {} staan
 
Ik ben urenlang bezig geweest deze code te proberen begrijpen, maar het lukt me niet om het te begrijpen. Wie kan me deze code stap voor stap uitleggen?

#include <iostream>
using namespace std;
int main()
{
char ch;
double cijfer, som =0.0, gemiddelde;
int aantal =0;
do
{ cout << "Voer cijfer in: ";
cin >> cijfer;
cin.get();
if (cijfer <1.0 || cijfer>10.0)
{ cout <<'\a';
cout << "Dit was geen geldig cijfer " << endl;
break;
}
aantal++;
som += cijfer;
cout << '\a';
cout << "Meer cijfers invoeren? (j of n): ";
cin>> ch;
while(cin.get() != '\n');
cout << endl;
}
while ( ch!= 'n');

cout << "Er zijn " << aantal << " geldige cijfers ingevoerd."<< endl;
if(aantal > 0 )
{ gemiddelde=som/aantal;
cout << "Het gemiddelde is : " << gemiddelde << endl;
}
cin.get();
}
veel is me al duidelijk behalve de eerste while statement= while (cin.get()!='\n'.). Waarom is hij nodig in de code?
 
Laatst bewerkt:
mag ik vragen hoe oud je bent wleke opleiding je doet of wat je werk is?

dit kan invloed hebben op je leerprestaties van het vak programmeren
je hebt overduidelijk niet eerder geprogrammeerd tenzij het een html is geweest
 
je hebt gelijk. Programmeren is slechts mijn hobby.

while(cin.get() != '\n');
cout << endl; = dit is echt verwarrend nestles.
 
Laatst bewerkt door een moderator:
cout betekend c out dat staat voor console out dit komt dus uit in de console

endl betekend end line dus volgende regel

while(cin.get() != '\n');

zolang(invoer niet \n (enter) is)

dit is een begin van een loop
een loop herhaalt zich totdat de voorwaarde niet meer waar is

dus bijv

while (i=1;i<2;i++) herhaalt zich totdat i 2 of meer is
{hier word alles dus gedaan zolang de voorwaarde waar is}

bijvoorbeeld

i = 1
while (i<6)
{
cout << endl;
i=i+1;
}
hier worden dus 5 regels overgeslagen
 
lol, bedankt man, maar nou ben je mij gek aan het maken . Ik weet wel dat het een loop is, maar waarom staan cout<<endl: na while(cin.get() != '\n'). Wat moet er "gecout", naat het scherm gebracht worden? while(cin.get() != '\n')?
TROUWENS, WAAROM MOETEN TWEE WHILE STATEMENTS IN DE CODE? dE TWEEDE WHILE BEGRIJPT IK WEL, MAAR DE EERSTE NIET.
 
Laatst bewerkt door een moderator:
SRY, TE VEEL POGINGEN, EVEN VERMOEID, MIJN EXCUSES VOOR HET "bOEK" (LOL) HIERONDER

#include <iostream>
using namespace std;
int main()
{
char ch;
double cijfer, som =0.0, gemiddelde;
int aantal =0;
do
{ cout << "Voer cijfer in: ";
cin >> cijfer;
cin.get();
if (cijfer <1.0 || cijfer>10.0)
{ cout <<'\a';
cout << "Dit was geen geldig cijfer " << endl;
break;
}
aantal++;
som += cijfer;
cout << '\a';
cout << "Meer cijfers invoeren? (j of n): ";
cin>> ch;
while(cin.get() != '\n');
cout << endl;
}
while ( ch!= 'n');

cout << "Er zijn " << aantal << " geldige cijfers ingevoerd."<< endl;
if(aantal > 0 )
{ gemiddelde=som/aantal;
cout << "Het gemiddelde is : " << gemiddelde << endl;
}
cin.get();
}
 
Laatst bewerkt door een moderator:
@Yanik: wederom verzoek ik je nu dringend om niet telkens die quote knop te gebruiken.
Je gedrag op ons forum is niet hetgeen wij graag zien.
Je volgt o.a. geen aanwijzingen van moderators op,verzint belachelijke titels van je vragen en maakt topics niet eens af, opent voor ieder wiswasje een nieuw topic.
Het wordt tijd dat je zelf eens aan het leren gaat.

Bij deze nu dus een waarschuwing.
 
bedankt. Ik leer hard en wanneeer ik niet kan, stoor ik jullie. Deze site is een paradijs. Trap me er aub niet uit.
 
Laatst bewerkt door een moderator:
Ik zit te denken om het wel te doen.
Ik zeg dat quoten bij een directe reactie niet nodig is. Vervolgens je eerste bericht quote je mij.:mad:

Hardleers??
Bij een directe reactie gebruik je de knop:Reageer op vraag.
 
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int getal;
for ( int rij =1; rij<=5; rij++)
{ for(int kol = 1; kol <=10; kol++)
{
getal = rij * kol;
cout << setw(4) << getal;
}
cout << endl;
}
cin.get();
}
hoe worden deze getallen vermenigvuldigd? Is het eerst 1(rij) * 1 t/m 10 van de kol, en vervolgens 2(rij) * 1t/m10 van de kol, waarna 3(rij) * 1t/m 10 van de kol en zo gaat maar door, bijv: 4(rij) * 1t/m10 van de kol???
 
Is het eerst 1(rij) * 1 t/m 10 van de kol, en vervolgens 2(rij) * 1t/m10 van de kol, waarna 3(rij) * 1t/m 10 van de kol en zo gaat maar door, bijv: 4(rij) * 1t/m10 van de kol???

Dat dus ;)
 
Om de code uit te leggen? Laat ik eens een poging wagen :)


[CPP]#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int getal;
for ( int rij =1; rij<=5; rij++) //Loopen door de 1e rij t/m de 5e rij
{ for(int kol = 1; kol <=10; kol++) //Loopen (per rij) door de 1e column t/m de 10e column
{
getal = rij * kol; //Getal = Rijnummer * Columnnummer
cout << setw(4) << getal; //Laat het getal zien en ga 4 plaatsen opzij
}
cout << endl; //Laat witregel zien (na elke rij dus)
}
cin.get();
}[/CPP]

Als het goed is krijg je dus 5 rijen met 10 columns. Am I right? :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan