Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Losowanie bez powtórzeń - praca domowa - lekcja 21

Ostatnio zmodyfikowano 2015-07-22 17:11
Autor Wiadomość
lcam
Temat założony przez niniejszego użytkownika
Losowanie bez powtórzeń - praca domowa - lekcja 21
» 2015-07-22 10:13:24
Cześć,
bardzo proszę kogoś o wykazanie błędu w rozumowaniu, jaki tu popełniam, ponieważ program nie wypisuje mi żadnych wartości. Na pewno jest tu parę karygodnych błędów - nawróćcie mnie na dobrą drogę.
C/C++
#include <iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int wpiszLiczby( int t_user[], int ilosc )
{
    int i = 0;
    int a = 0;
    do
    {
        cin.clear();
        cin.sync();
        cout << "Wpisz liczbe: ";
        cin >> a;
        i++;
    } while( i < ilosc );
   
}
int losuj()
{
    return( rand() % 3 );
}
bool sprawdzCzyUzytkownika( int t_user[], int liczba, int ilosc )
{
    int i = 0;
    do
    {
        if( t_user[ i ] == liczba ) return true;
       
        i++;
    } while( i < ilosc );
   
    return false;
}
bool sprawdzCzyPowtarza( int liczba, int t_los[], int ilosc )
{
    int i = 0;
    do
    {
        if( t_los[ i ] == liczba )
             return true;
       
        i++;
    } while( i < ilosc );
   
    return false;
}
int main()
{
    srand( time( NULL ) );
    int t_user[ 3 ];
    wpiszLiczby( t_user, 3 );
    int t_los[ 2 ];
    int wylosowanych = 0;
    do
    {
        int liczba = losuj();
        if( sprawdzCzyUzytkownika( t_user, liczba, wylosowanych ) == true )
       
        {
            if( sprawdzCzyPowtarza( liczba, t_los, wylosowanych ) == false )
            {
                t_los[ wylosowanych ] = liczba;
                wylosowanych++;
            }
           
        }
    } while( wylosowanych < 2 );
   
    wylosowanych = 0;
    do
    {
        cout << t_los[ wylosowanych ] << endl;
        wylosowanych++;
    } while( wylosowanych < 2 );
   
    return 0;
}
P-135071
carlosmay
» 2015-07-22 10:52:39
C/C++
int wpiszLiczby( int t_user[], int ilosc )
tutaj musi być void bo funkcja nie ma zwracać wartości.

Natomiast tutaj
C/C++
do
{
    int liczba = losuj();
    if( sprawdzCzyUzytkownika( t_user, liczba, wylosowanych ) == true ) // jeśli liczba bez powtorzen pomija reszte?
   
    {
        if( sprawdzCzyPowtarza( liczba, t_los, wylosowanych ) == false ) // wtedy to nigdy sie nie wykona
        {
            t_los[ wylosowanych ] = liczba; // i to tez
            wylosowanych++;
        }
       
    }
} while( wylosowanych < 2 );

jak liczba nie powtarza się to zamiast zapisać ją w tablicy, pomijasz tę czynność.
Błąd jest w tym fragmencie.
P-135073
lcam
Temat założony przez niniejszego użytkownika
» 2015-07-22 17:11:13
Już wszystko rozumiem - czeski błąd w podejściu do programu połączony z ciemnotą umysłową:) Tak czy inaczej dziękuję za pomoc :)
P-135089
« 1 »
  Strona 1 z 1