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

[Rozdział 21.) Zadanie nr. 1 - tajemnicze zachowanie kodu.

Ostatnio zmodyfikowano 2015-02-13 17:41
Autor Wiadomość
szneqz
Temat założony przez niniejszego użytkownika
[Rozdział 21.) Zadanie nr. 1 - tajemnicze zachowanie kodu.
» 2015-02-13 17:41:47
Witam!
Przechodząc do sedna rzeczy zastanawia mnie pewne zachowanie tego kodu:

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

void losowanie( int tablicaliczb[], int najmn, int najw, int liczba )
{
    tablicaliczb[ liczba ] =( std::rand() %( najw - najmn + 1 ) ) + najmn;
    return;
}

int sprawdzanie( int tablicaliczb[], int liczba )
{
    if( liczba == 0 )
    {
        liczba++;
        return liczba;
    }
    else
    {
        if( tablicaliczb[ liczba ] == tablicaliczb[ liczba - 1 ] )
        {
            return liczba;
        }
        else
        {
            liczba++;
            return liczba;
        }
    }
}
void wypisanie( int tablicaliczb[], int tablicawpisan[] )
{
    int cyfra = 0;
    do
    {
        std::cout << tablicawpisan[ tablicaliczb[ cyfra ] ] << ", ";
        cyfra++;
    } while( cyfra < 2 );
   
    return;
}

void dopisywanie( int tablicadopisywania[] )
{
    int cyfrunia = 0;
    std::cout << "Wpisz 3 rozne liczby:" << std::endl;
    do
    {
        std::cin >> tablicadopisywania[ cyfrunia ];
        bool dobrze = std::cin.good();
        std::cin.clear();
        std::cin.sync();
        if((( cyfrunia == 0 ) ||(( tablicadopisywania[ cyfrunia ] != tablicadopisywania[ cyfrunia - 1 ] ) &&( tablicadopisywania[ cyfrunia ] != tablicadopisywania[ cyfrunia - 2 ] ) ) ) &&( dobrze == 1 ) )
        {
            cyfrunia++;
        }
        else
        {
            std::cout << "Liczba jest niepoprawna, prosze wpisac poprawna" << std::endl;
        }
    } while( cyfrunia < 3 );
   
    return;
   
}

int main()
{
    srand( time( NULL ) );
    int tablicalosowania[ 3 ];
    int tablicawpisywania[ 3 ];
    int liczba = 0;
    std::cout << "Zostana wylosowane 2 liczby z 3, ktore zostana wypisane" << std::endl;
    dopisywanie( tablicawpisywania );
    do
    {
        losowanie( tablicalosowania, 1, 3, liczba );
        liczba = sprawdzanie( tablicalosowania, liczba );
    } while( liczba < 5 );
   
    wypisanie( tablicalosowania, tablicawpisywania );
    return 0;
   
}

Za każdym razem, gdy wpiszę liczbę 65 i gdy zostanie ona wylosowana wypisywana jest ona jako liczba 3. Wszystkie inne liczby zachowują się normalnie. Czy mógłby ktoś mi powiedzieć o co chodzi ?

Dziękuję i pozdrawiam.
P-126513
« 1 »
  Strona 1 z 1