#include #include # include /* Lotto 1- array met 6 verschillende random getallen genereren 2- gebruiker 6 verschillende getallen laten ingeven 3- nagaan hoeveel juiste, welke 4- op scherm zetten met in void alleen declaraties en functieaanroepen */ // const voor alle functies (array upper boundary) const top = 6; //prototypes void vularray(int Array[]); void vularray2(int Array[]); void vergelijk(int Array[], int Array2[]); int genereer(); void verwijder(int n,int Array[]); void opscherm(int Array[], int Array2[]); void show(int array[]); //main void main() { int WinnendeGetallen [top]; int SpelerGetallen [top]; int AantalJuiste =0; srand ((unsigned) time (NULL)); vularray(WinnendeGetallen); cout << "cheat : "; show(WinnendeGetallen); vularray2(SpelerGetallen); cout << "Uitslag van de trekking : "; show(WinnendeGetallen); vergelijk(WinnendeGetallen, SpelerGetallen); // uitslag wordt weergegeven vanuit functie vergelijk() cout << "main : " ; show(SpelerGetallen); } //functies void vularray(int Array[]) { // ook nog testen dat geen twee dezelfde getallen voorkomen ! for(int i = 0; i < top; i++) { Array[i] = genereer(); } } int genereer() { int range = 42; int getal; getal = rand()%range +1; return getal; } void vularray2(int Array[]) { cout << "\ngeef 6 getallen :\n"; // ook nog testen dat geen twee dezelfde getallen voorkomen ! for(int i = 0; i < top; i++) { cin >> Array[i]; } } void vergelijk(int Array[], int Array2[]) {// staat nog niet op punty : er worden dingen overgeslagen-- int AantJuist = 0; int w=0, s=0, t=1; do { w = 0; do { if (Array[w] == Array2[s]) { cout << "getal " << Array2[s] <<" is OK \n"; w=top; } else { //if(++w==top) w++; if(w==top) { cout << "getal " << Array2[s] <<" NIET OK \n"; verwijder(Array2[s], Array2); } } }while (w < top); s++; }while (s < top); } void show(int array[]) { for( int i = 0; i< top; i++) { cout << array[i] << " - "; } cout << endl; } void verwijder(int n, int Array[]) { /* dit is een mooie */ // bedoeling : verwijder getal n uit Array. int verwijder = 0; // houdt bij hoeveel getallen verwijderd zijn // zie verder. // lus doorloopt array en controleers (if ...) // of getal n voorkomt in array for (int i = 0; i < top; i++) { if (Array[i] == n) { verwijder++; }/* dwz : in deze cyclus wordt enkel aangeduid dat tijdens deze doorloop het getal gevonden is. via de waarde van 'verwijder' zal in de volgende cyclus het volgende getal naar voorgeschoven worden. */ else { Array [i-verwijder] = Array[i]; }/* als er nog geen te verwijderen getal gevonden is, blijven de waarden van de azrray ongewijzigd (verwijder==0) als verwijder bijv = 1, (i.e te verwijderen getal gevonden , dan wordt het getal in de vorige positie overschreven door het getal van de huidige positie dit wordt herhaalt tot heel de array doorlopen is : alle getallen na het te verwijderen getal schuiiven naar voor */ } /* als er getallen naar voor geschoven zijn,staat er achteraan in de array nog waarden die al naarvoor gecopieerd zijn. die moeten verwijderd worden (op 0 zetten) met loop (zo dikwijls als er getallen verwijderd zijn) */ for (int j = 0; j < verwijder; j++) { Array[top-1-j] = 0; } }