Hey !
Ik ben hier net nieuw, maar om het in het kort te zeggen, ik ben een studente 1ste jaar Informatica. Nu hebben wij op school dus c++. En gisteren bij het werkcollege hebben we een oefening gekregen waar ik niet meer aan uit geraak. Toch het einde niet.
Laat ik wel even zeggen, het is de eerste keer dat ik ergens echt niet aan uit geraak.
Dit was de opdracht:
(de layout klopt niet helemaal van de voorbeeld uitvoer, er is dus een setw(3) tussen ieder cijfer.
Nu heb ik dit reeds van code:
Maar ik zit echt in de knoop voor die setfill te krijgen van ###..
Ik dacht met 3 forlussen te werken eigenlijk.
iets als:
for (int i = 0 ; i < maxPos ; i++)
{
uitschrijven
}
for (int i = maxPos; i < maxPos+teller-1 ; i++)
{
uitschrijven
}
for (int i = maxPos+teller-1 ; i < 100; i++)
{
uitschrijven
}
maar dat werkte niet ..
Is er iemand die mij kan helpen ?
Ik ben hier net nieuw, maar om het in het kort te zeggen, ik ben een studente 1ste jaar Informatica. Nu hebben wij op school dus c++. En gisteren bij het werkcollege hebben we een oefening gekregen waar ik niet meer aan uit geraak. Toch het einde niet.
Laat ik wel even zeggen, het is de eerste keer dat ik ergens echt niet aan uit geraak.
Dit was de opdracht:
Code:
Oefening 4
Men gooit een muntje omhoog en éénmaal gevallen en in rust geeft de bovenzijde ons
"kop" of "letter" te zien (we sluiten het uitzonderlijke geval uit dat het op de zijkant
kan blijven staan). Er wordt nu gevraagd om deze situatie "kop" of "letter" na te
bootsen.
We stellen daarbij "kop" door de waarde 1 voor en "letter" door de waarde 0. We
simuleren nu 100 worpen door 100 toevalswaarden 0 en 1 te genereren. Bij wijze van
controle laten we ze ook uitschrijven, 10 waarden per lijn.
Laat uw programma uitzoeken (en daarna ook uitschrijven) wat de langste reeks
gelijke worpen was; vermeld erbij of het daarbij om “kop” dan wel “letter” ging; geef
ook de plaats aan vanaf waar dit maximum zich voordeed. Enkel het 1e voorkomen
van dit maximum wordt gevraagd (want er kunnen zich meerdere gelijke maxima
voordoen).
Voorbeelduitvoer: (langste reeks uitgevuld(#) gedrukt)
100 worpen :
1 1 0 1 1 1 0 0###1###1
###1###1 0 0 0 1 0 0 1 0
1 1 0 1 1 0 0 1 1 0
0 1 1 1 1 0 0 0 1 0
1 1 0 0 0 1 0 0 1 0
1 1 0 1 1 0 1 0 1 0
0 1 1 0 1 1 0 1 0 1
1 0 1 0 0 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 0 0 1 0 1 1 0 0 1
Langste reeks gelijke worpen = 4 x kop
en kwam (1e maal) voor vanaf plaats 9
Nu heb ik dit reeds van code:
Code:
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
using namespace std;
int main ()
{
int worp[100]={0};
int teller = 1, max = 0, maxPos;
bool kop = true;
srand(time(0));
for(int i = 0; i < 100; i++)
{
worp[i]=rand()%2;
}
for (int i = 0; i < 99; i++)
{
if (worp[i] == worp[i+1])
{
teller++;
}
else
{
if (teller > max)
{
max = teller;
maxPos = i - teller + 1;
kop = worp[i-1];
}
teller = 1;
}
}
cout << "100 worpen: " << endl;
for (int k=0; k<100; k++)
{
cout << setw(4) << worp[k];
if ((k+1)%10 == 0)
cout << endl;
}
cout << endl;
cout << "Langste reeks gelijke worpen = " << max << "x ";
if (kop)
cout << "kop" << endl;
else
cout << "munt" << endl;
cout << "en kwam 1e maal voor vanaf plaats " << maxPos+1;
return 0;
}
Maar ik zit echt in de knoop voor die setfill te krijgen van ###..
Ik dacht met 3 forlussen te werken eigenlijk.
iets als:
for (int i = 0 ; i < maxPos ; i++)
{
uitschrijven
}
for (int i = maxPos; i < maxPos+teller-1 ; i++)
{
uitschrijven
}
for (int i = maxPos+teller-1 ; i < 100; i++)
{
uitschrijven
}
maar dat werkte niet ..
Is er iemand die mij kan helpen ?