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

[Lekcja 21] zadanie z lekcji

Ostatnio zmodyfikowano 2014-06-22 21:36
Autor Wiadomość
grzeso
Temat założony przez niniejszego użytkownika
[Lekcja 21] zadanie z lekcji
» 2014-06-22 20:06:57
mój kod
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

int losowanie()
{
    return( std::rand() % 10 ) + 1;
}

bool CzyByla( int tab[], int wylosowana, int IloscElementowTablicy )
{
   
   
   
    if( IloscElementowTablicy <= 0 )
         return false;
   
    int i = 0;
    do
    {
        if( tab[ i ] == wylosowana )
             return true;
       
        i++;
    }
    while( i < IloscElementowTablicy );
   
    return false;
}

/*int zapisanie (int tablica[],int zapisz,int i)
{
    tablica[i] = zapisz;

}*/

int main()
{
    srand( time( 0 ) );
    int a;
   
    std::cout << "ile liczb losowaæ?" << std::endl;
    std::cin >> a;
    std::cout << std::endl;
    int tablica[ a ];
   
    int NrWTab = 0;
   
    do
   
    {
        int wylosowanaLiczba = losowanie();
        if( CzyByla( tablica, wylosowanaLiczba, NrWTab ) == false );
       
        {
            tablica[ NrWTab ] = wylosowanaLiczba;
            NrWTab++;
        }
    }
    while( NrWTab < a );
   
    NrWTab = 0;
    do
    {
        std::cout << tablica[ NrWTab ] << std::endl;
        NrWTab++;
    }
    while( NrWTab < a );
   
}

dlaczego losuje z powtórzeniem? założenie jest takie że wylosowana liczba ma sie nie powtarzać
poza nazwami zmiennych to wszystko jest jak w kodzie z lekcji
P-112527
grzeso
Temat założony przez niniejszego użytkownika
» 2014-06-22 20:39:06
Rozwiązanie:

if( CzyByla( tablica, wylosowanaLiczba, NrWTab ) == false );

bez ";" na końcu


Tylko teraz pytanie brzmi dlaczego?
już teraz będę do końca życia pamiętał żeby po warunku od
if
 nie stawiać
;
 ale przecież coś tam się zrobiło.

Czy można uznać że program zrobił tak: sprawdził warunek if, ale nie miał powiedziane co ma zrobić jak go sprawdzi wiec sprawdził "tak dla picu", zignorował klamerki:
C/C++
{
    tablica[ NrWTab ] = wylosowanaLiczba;
    NrWTab++;
}

i do tablicy wpisał to co się wylosowało?
P-112531
newboyy
» 2014-06-22 20:56:07
Nie stawia się tam średnika , ponieważ po "IF"(etc.) musisz zdefiniować zadanie(no chyba że chcesz miec sam warunek , ale to nie ma sensu). Tak samo w pisaniu funkcji. Gdy definiujesz ciało funkcji( czyli to co ona ma robi ) to nie dajesz średnika, bo średnik oznaczałby zakończenie funkcji czyli jej deklaracje.

Deklaracja funkcji:
void Funkcja( int parametr );

Definicja funkcji:
C/C++
void Funkcja( int parametr )
{
    //Jakieś tam operacje
}
P-112533
grzeso
Temat założony przez niniejszego użytkownika
» 2014-06-22 21:04:10
czyli ze średnikiem kończę "if" i dalej leci sobie jakby tego "if" nie było i robi co tam mu się karze?
P-112535
newboyy
» 2014-06-22 21:24:44
tak
P-112536
grzeso
Temat założony przez niniejszego użytkownika
» 2014-06-22 21:36:27
Dzięki
P-112537
« 1 »
  Strona 1 z 1