nicocarraggi
Nieuwe gebruiker
- Lid geworden
- 15 nov 2010
- Berichten
- 2
Hallo,
Ik ben aan het werken voor een taak van c++. Ik moet dobbelstenen implementeren in c++ en dat lukt wel als ik een klein programma'tje had gemaakt om te testen met 2 dobbelstenen van 6 zijden:
output :
----------------------------------------------------------------
Nicolas-Carraggis-MacBook-Pro:test nicolascarraggi$ ls
Makefile test.cc
Nicolas-Carraggis-MacBook-Pro:test nicolascarraggi$ make
g++ -c -o test.o test.cc
g++ -o program test.o
Nicolas-Carraggis-MacBook-Pro:test nicolascarraggi$ ./program
my vector contains:
2: ( 2% ) |**
3: ( 5% ) |*****
4: ( 8% ) |********
5: ( 11% ) |***********
6: ( 13% ) |*************
7: ( 16% ) |****************
8: ( 13% ) |*************
9: ( 11% ) |***********
10: ( 8% ) |********
11: ( 5% ) |*****
12: ( 2% ) |**
---------------------------------------------------------
Nu wil ik dit veralgemenen voor x aantal dobbelstenen en y aantal zijden :
dice.cc:
main.cc :
output :
----------------------------------------------------------------
Nicolas-Carraggis-MacBook-Pro:taak2-ncarragg nicolascarraggi$ ls
Makefile dice.h dobkans.h test
dice.cc dobkans.cc main.cc
Nicolas-Carraggis-MacBook-Pro:taak2-ncarragg nicolascarraggi$ make
g++ -c -o main.o main.cc
g++ -c -o dice.o dice.cc
g++ -o program main.o dice.o
Nicolas-Carraggis-MacBook-Pro:taak2-ncarragg nicolascarraggi$ ./program
Teeeeest main
Aantal zijden dobbelsteen:
6
Aantal dobbelstenen:
2
Floating point exception
---------------------------------------------------------
Ik weet dat dit misschien niet de beste manier is om dit te implementeren maar ik ben c++ aan het leren. Kan iemand mij zeggen waar de fout vandaan komt?
Alvast bedankt,
Nicolas
Ik ben aan het werken voor een taak van c++. Ik moet dobbelstenen implementeren in c++ en dat lukt wel als ik een klein programma'tje had gemaakt om te testen met 2 dobbelstenen van 6 zijden:
Code:
#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <vector>
using namespace std;
vector<int> tabel (11, 0);
vector<int>::iterator it;
int aantaldob(2);
int zijden(6);
int mogelijkheden(36);
int throwdice()
{
int result(random() % zijden + 1);
// cout << result << endl;
return result;
}
int throwdices()
{
int result(0);
for (int i = 0; (i < aantaldob); ++i)
result += throwdice();
// cout << "---- +" << endl;
// cout << result << endl;
return result;
}
int addtox(int x)
{
tabel.at((x-2))+= 1;
}
int fillvector()
{
for (int ctr(0);ctr<36000;ctr++)
addtox(throwdices());
}
int drawstars(int x)
{
cout << "|";
for (int ctr(0);ctr<x;ctr++)
cout << "*";
}
int main()
{
//cout.precision(2);
//for (int ctr=0; ctr<11; ctr++)
// tabel.at(ctr)=(ctr+2);
cout << "my vector contains: " << endl;
int ctr(2);
// for (it=tabel.begin(); it<tabel.end(); it++)
//{
//cout << ctr << ": " << *it << endl;
//ctr++;
//}
fillvector();
cout << endl;
for (it=tabel.begin(); it<tabel.end(); it++)
{
int res = (*it / 360);
cout.width(2);
cout << ctr;
cout << ": ( ";
cout.width(2);
cout << res;
cout << "% ) " ;
cout.width(2);
drawstars(res);
cout << endl;
ctr++;
}
return 0;
}
output :
----------------------------------------------------------------
Nicolas-Carraggis-MacBook-Pro:test nicolascarraggi$ ls
Makefile test.cc
Nicolas-Carraggis-MacBook-Pro:test nicolascarraggi$ make
g++ -c -o test.o test.cc
g++ -o program test.o
Nicolas-Carraggis-MacBook-Pro:test nicolascarraggi$ ./program
my vector contains:
2: ( 2% ) |**
3: ( 5% ) |*****
4: ( 8% ) |********
5: ( 11% ) |***********
6: ( 13% ) |*************
7: ( 16% ) |****************
8: ( 13% ) |*************
9: ( 11% ) |***********
10: ( 8% ) |********
11: ( 5% ) |*****
12: ( 2% ) |**
---------------------------------------------------------
Nu wil ik dit veralgemenen voor x aantal dobbelstenen en y aantal zijden :
dice.cc:
Code:
#include <stdlib.h>
#include <time.h>
#include <vector>
#include <iostream>
using namespace std;
int aantaldob;
int zijden;
int mogelijkheden;
vector<int> tabel (100, 0);
vector<int>::iterator it;
int throwdice()
{
int result(random() % zijden + 1);
return result;
}
int throwdices()
{
int result(0);
for (int i = 0; (i < aantaldob); ++i)
result += throwdice();
return result;
}
int teltotaal(int ctr)
{
if (ctr > 1)
{
mogelijkheden *= zijden;
return teltotaal((ctr - 1));
}
else mogelijkheden *= zijden;
}
int addtox(int x)
{
tabel.at((x-2))+= 1;
}
int vultabel()
{
for (int ctr(0);ctr<(mogelijkheden*1000);ctr++)
addtox(throwdices());
}
int drawstars(int x)
{
cout << "|";
for (int ctr(0);ctr<x;ctr++)
cout << "*";
}
int toonresultaat()
{
int ctr(2);
for (it=tabel.begin(); it<tabel.end(); it++)
{
int res = (*it / (mogelijkheden*10));
cout.width(2);
cout << ctr;
cout << ": ( ";
cout.width(2);
cout << res;
cout << "% ) " ;
cout.width(2);
drawstars(res);
cout << endl;
ctr++;
}
return 0;
}
int ask_dice()
{
cout << "Aantal zijden dobbelsteen:" << endl;
cin >> zijden;
cout << endl;
cout << "Aantal dobbelstenen:" << endl;
cin >> aantaldob;
srandom(time(0));
teltotaal(aantaldob);
vultabel();
toonresultaat();
cout << endl;
return 0;
}
main.cc :
Code:
#include <iostream>
#include "dobkans.h"
#include "dice.h"
using namespace std;
int main()
{
cout << "Teeeeest main" << endl;
cout << endl;
// return ask_dob();
return ask_dice();
}
output :
----------------------------------------------------------------
Nicolas-Carraggis-MacBook-Pro:taak2-ncarragg nicolascarraggi$ ls
Makefile dice.h dobkans.h test
dice.cc dobkans.cc main.cc
Nicolas-Carraggis-MacBook-Pro:taak2-ncarragg nicolascarraggi$ make
g++ -c -o main.o main.cc
g++ -c -o dice.o dice.cc
g++ -o program main.o dice.o
Nicolas-Carraggis-MacBook-Pro:taak2-ncarragg nicolascarraggi$ ./program
Teeeeest main
Aantal zijden dobbelsteen:
6
Aantal dobbelstenen:
2
Floating point exception
---------------------------------------------------------
Ik weet dat dit misschien niet de beste manier is om dit te implementeren maar ik ben c++ aan het leren. Kan iemand mij zeggen waar de fout vandaan komt?
Alvast bedankt,
Nicolas