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

rozdzial 20 losowanie roznych liczb

Ostatnio zmodyfikowano 2015-07-19 01:56
Autor Wiadomość
progx100
Temat założony przez niniejszego użytkownika
rozdzial 20 losowanie roznych liczb
» 2015-07-18 23:32:24
Witam
Chodzi o ten dzial i ten program:


#include <iostream>
#include <cstdlib>
#include <ctime>

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()
{
    return( rand() % 10 ) + 1;
}

int main()
{
    srand( time( 0 ) );
    int wylosowane[ 5 ];
    int wylosowanych = 0;
    do
    {
        int liczba = wylosuj();
        if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false )
        {
            wylosowane[ wylosowanych ] = liczba;
            wylosowanych++;
        } //if
    } while( wylosowanych < 5 );
   
    wylosowanych = 0;
    do
    {
        std::cout << wylosowane[ wylosowanych ] << std::endl;
        wylosowanych++;
    } while( wylosowanych < 5 );
   
    return 0;
}


Nie bardzo potrafie zinterpretowac funkcje tej linijki
if(czyBylaWylosowana(liczba, wylosowane, wylosowanych)==false)

a mianowicie dlaczego jest to false a nie true, jaką funkcje w programie pelni ta cala instrukcja?, Czy mógłbym prosic aby ktos mi to objasnił? Opanowalem dwa poziomy (jesli chodzi o zrozumienie)tylko z tym rozdzialem mam problem. Z gory dziekuje.
P-134877
MinusPL
» 2015-07-18 23:37:10
Funkcja ta sprawdza czy dana liczba już się pojawiła.
C/C++
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;
}

w main pojawia się czyBylaWylosowana(argumenty) == false w if, ponieważ funkcja sprawdza czy dana liczba już jest.
Dokładniej kod:
C/C++
if( tab[ i ] == iLiczba )
     return true;

Oznacza on tyle, że jeśli w tablicy (w funkcji tab), istnieje już taka liczba ma zwrócić true, jeśli nie false.
Stąd w mainie "== false", gdyż kod ma się wykonać tylko wtedy, gdy nowo wylosowana liczba nie znajduje się już w tablicy.
P-134878
progx100
Temat założony przez niniejszego użytkownika
rozdzial 21
» 2015-07-19 01:30:49
Dzieki za odpowiedz ale mam jeszcae jedno pytanko, mianowicie co się najpierw wykonuje: funkcja czyBylWyl lub czy instrukcja if (czyBylWyl(argumenty)==false) ?
P-134882
carlosmay
» 2015-07-19 01:48:37
W ifach zawsze sprawdzane jest wnętrze nawiasu.
A kolejność we w nawiasie już zależy od priorytetów elementów warunku.
i jesli cały warunek jest prawdziwy wykonuje się instrukcja if.
P-134885
progx100
Temat założony przez niniejszego użytkownika
odpowiedz
» 2015-07-19 01:56:13
Dzieki zamykam
P-134886
« 1 »
  Strona 1 z 1