"Lotto" - program nie porównuje liczb podanych przez użytkownika z liczbami wylosowanymi przez komputer
Witam, jest to mój pierwszy post na tym forum, więc za wszelkie źle sformułowane pytania i niejasności z góry przepraszam.
Od kilku dni uczę się podstaw C++ z kursów (między innymi tego, który jest na łamach tej strony). Po odświeżeniu dawnej podstawowej wiedzy (funkcje, tablice, pętle - czyli podstawy podstaw) stwierdziłem, że warto coś napisać dla podkręcenia programistycznego skilla. Wybór padł na program "udający" Dużego Lotka...
Program działa na prostej zasadzie - najpierw prosi użytkownika o podanie 6 liczb, następnie zapisuje je do WybraneLiczby[]. Następnie losuje 6 liczb (losowanie bez powtórzeń, of course :)), zapisuje je do wylosowane[] i wywala na ekran. Trzecia "część" to porównanie liczb wybranych przez usera i wylosowanych. Tutaj zaczynają sie schody... Coś takiego:
if( WybraneLiczby[ licznik3 ] == wylosowane[ licznik3 ] )
Niby sie kompiluje, lecz nic nie robi. Z tym sposobem jest jeszcze zabawniej:
if( WybraneLiczby[ wylosowane[ licznik3 ] ] )
Znów kompilacja udana, tylko że program najpierw sie crashował przy tej linijce (sprawdzane dla pewności debuggerem), a po kolejnych poprawkach i kolejnej kompilacji niby działał dobrze, ale... patrz pierwszy sposób :)
Siedze nad tym już z 2h i nie mogę rozkminić, jak należy porównać te indeksy z tych dwóch tablic. Ba, jestem świadom tego, iż jeszcze potrzeba sprawdzania wszystkich możliwych kombinacji, nie tylko indeksów [0] == [0], [1] == [1] i tak dalej. Czyli mam na myśli: [0] == [0], [0] == [1], [0] == [2]... [0] == [5], [1] == [0] aż do [5] == [5]. Do tego zaprzęgnie się dwie pętelki for i po sprawie. Tak myśle :)
Tutaj macie cały kod aplikacji (przecież to żadna tajemnica, promujmy open - source :))
#include <iostream>
#include <conio.h>
#include <ctime>
#include <cstdlib>
#include <windows.h>
using namespace std;
bool CzyBylaWylosowana( int iLiczba, int tablica[], int ile )
{
if( ile <= 0 )
return false;
int i = 0;
do
{
if( tablica[ i ] == iLiczba )
return true;
i++;
}
while( i < ile );
return false;
}
int wylosuj()
{
return( rand() % 6 ) + 1;
}
int main()
{
int licznik = 0;
int WybraneLiczby[ 6 ];
int wybrana = 0;
int licznik3 = 0;
int trafioneliczby = 0;
for( licznik = 0; licznik < 6; licznik++ )
{
cout << "Podaj " << licznik + 1 << " liczbe: ";
cin >> wybrana;
if( wybrana <= 49 )
wybrana = WybraneLiczby[ licznik ];
else
licznik -= 1;
}
cout << endl << endl;
Sleep( 2000 );
srand( time( 0 ) );
int wylosowane[ 6 ];
int wylosowanych = 0;
do
{
int liczba = wylosuj();
if( CzyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false )
{
wylosowane[ wylosowanych ] = liczba;
wylosowanych++;
}
}
while( wylosowanych < 6 );
wylosowanych = 0;
do
{
cout << wylosowane[ wylosowanych ] << endl;
wylosowanych++;
}
while( wylosowanych < 6 );
for( licznik3 = 0; licznik3 < 6; licznik3++ )
{
if( WybraneLiczby[ wylosowane[ licznik3 ] ] )
{
++trafioneliczby;
}
else
continue;
}
cout << trafioneliczby << " na 6 liczb trafiono";
getch();
}