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

kurs c++. Poziom 2 . dział 21 . Zadanie domowe nr.2 ( program zastyga ).

Ostatnio zmodyfikowano 2019-06-16 14:17
Autor Wiadomość
Lewy1607
Temat założony przez niniejszego użytkownika
kurs c++. Poziom 2 . dział 21 . Zadanie domowe nr.2 ( program zastyga ).
» 2019-06-16 13:50:40
Witam,po przerobieniu zadania domowego nr.1 na zadanie domowe nr.2 - program po wpisaniu 10 liczb z klawiatury zastyga.
Mógłby mi ktoś,wytłumaczyć gdzie leży mój błąd i dlaczego tak się dzieje?
Z góry Dziękuję.

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <limits>
bool czyBylaWylosowana( int iliczba, int tab[], int ile );
int wylosuj( int tab[] );
int wczytajLiczbe();
int main()
{
    srand( time( 0 ) );
    int wylosowane[ 10 ];
    int i = 0;
    int wylosowanych = 0;
    do
    {
        wylosowane[ i ] = wczytajLiczbe();
        i++;
    } while( i < 10 );
   
    std::cout << "\n\n\n\n";
    do
    {
        int liczba = wylosuj( wylosowane );
        if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false )
        {
            wylosowane[ wylosowanych ] = liczba;
            wylosowanych++;
        }
    } while( wylosowanych < 8 );
   
    wylosowanych = 0;
    do
    {
        std::cout << wylosowane[ wylosowanych ] << std::endl;
        wylosowanych++;
    } while( wylosowanych < 8 );
   
    return 0;
}
bool czyBylaWylosowana( int iliczba, int tab[], int ile )
{
    if( ile <= 0 )
    {
        return false;
    }
    int i = 0;
    do
    {
        if( tab[ i ] == iliczba )
        {
            return true;
        }
        i++;
    } while( i < ile );
   
    return false;
}
int wylosuj( int tab[] )
{
    int a = tab[ rand() % 10 ];
    return a;
}
int wczytajLiczbe()
{
    int liczba;
    bool bCzyfalsz;
    do
    {
        std::cin >> liczba;
        bCzyfalsz = std::cin.fail();
        std::cin.clear();
        std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
        if( bCzyfalsz == true )
        {
            std::cout << "Nieprawidlowa wartosc,moze sproboj ponownie?" << std::endl;
        }
    } while( bCzyfalsz == true );
   
    return liczba;
}

Edit: Stworzenie osobnej tablicy na dane wyjściowe pomogło.Dziękuję za pomoc,temat zamykam.
P-174802
pekfos
» 2019-06-16 14:17:45
Używasz jednej tablicy na dane wejściowe i wyjściowe. Tak też się da, ale twój kod sobie z tym nie radzi.
P-174803
« 1 »
  Strona 1 z 1