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

[Lekcja 21] Zadanie nr.1

Ostatnio zmodyfikowano 2012-03-18 14:52
Autor Wiadomość
Unlimited
Temat założony przez niniejszego użytkownika
[Lekcja 21] Zadanie nr.1
» 2012-03-17 20:50:39
Witam. Sam program działa lecz nie zawsze pokażą się dwie różne cyfry. Czasem te same a jednak sprawdzałem kod kilka razy i wydaje się być dobry.

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int podawanie_liczb()
{
    int a = 0;
    cout << "Podaj liczbe: ";
    cin.clear();
    cin.sync();
    cin >> a;
    return a;
}

int wylosuj( int podawane[ 3 ] )
{
    int a =( rand() % 3 ) + 0;
    return podawane[ a ];
}

bool czy_byla_wylosowana( int liczba, int losowane[ 2 ], int wylosowane )
{
    if( wylosowane <= 0 )
         return false;
   
    int i = 0;
    do
    {
        if( losowane[ i ] == liczba )
             return true;
       
        i++;
    } while( i < wylosowane );
   
    return false;
}

int main()
{
    srand( time( NULL ) );
    int podawane[ 3 ];
    int losowane[ 2 ];
    int wylosowane = 0;
    int a = 0;
   
    do
    {
        podawane[ a ] = podawanie_liczb();
        a++;
    } while( a < 3 );
   
    do
    {
        int liczba = wylosuj( podawane );
        if( czy_byla_wylosowana( liczba, losowane, wylosowane ) == false );
       
        {
            losowane[ wylosowane ] = liczba;
            wylosowane++;
        }
    } while( wylosowane < 2 );
   
    a = 0;
    do
    {
        cout << "Wylosowana liczba sposrod wyslanych: " << losowane[ a ] << endl;
        a++;
    } while( a < 2 );
   
    return 0;
}

Dobrze by było gdyby ktoś pokazał mi błąd...
P-52778
jsc
» 2012-03-17 21:06:04
Dlaczego deklarujesz funkcje z parametrami w postaci:
int losowane[ 2 ] i int podawane[ 3 ]?
P-52783
Unlimited
Temat założony przez niniejszego użytkownika
» 2012-03-17 21:07:43
Przekazywanie tablicy jednowymiarowej do funkcji
W C++ mamy do dyspozycji kilka form zapisu przekazywania tablic do funkcji. W niniejszym rozdziale poznamy trzy sposoby zapisu osiągnięcia naszego celu. Zapisy, które zostaną przedstawione są względem siebie równoważne, a więc można ich używać zamiennie. Zapisy te wyglądają następująco:
C/C++
void sposob_1( int tablica[ 123 ] );
void sposob_2( int tablica[] );
void sposob_3( int * tablica );
P-52784
jsc
» 2012-03-17 21:18:49
Na początek znaleziony błąd to:
C/C++
int wylosuj( int podawane[ 3 ] )
{
    int a =( rand() % 3 ) + 0;
    return podawane[ a ];
}
funkcja ta zwraca wartość przypadkowej komórki tablicy, czyli nie wiesz nawet co sprawdzasz.
P-52786
Unlimited
Temat założony przez niniejszego użytkownika
» 2012-03-17 21:20:56
W zadaniu jest napisane aby wylosowana została liczba z wcześniej podanych liczb przez człowieka
P-52787
akwes
» 2012-03-17 21:21:39
C/C++
void sposob_1( int tablica[ 123 ] );
void sposob_2( int tablica[] );

Są to dokładnie takie same przykłady tak samo interpretowanie przez kompilator, ponieważ pierwszy rozmiar tablicy nie bierze udziału w obliczaniu położenia elementu w tablicy.

Dlatego
C/C++
void sposob_1( int tablica[] );

ale już
C/C++
void sposob_2( int tablica[][ 3 ] );
P-52788
Unlimited
Temat założony przez niniejszego użytkownika
» 2012-03-17 21:24:26
akwes, czyli mam dobrze to czy zmienić? Próbowałem też na samych klamrach [] ale nic nie dało.
P-52790
jsc
» 2012-03-17 21:28:34
Najpewniejsza jest gwiazdka.
P-52794
« 1 » 2 3 4 5 6
  Strona 1 z 6 Następna strona