G4m3killer Temat założony przez niniejszego użytkownika |
[Lekcja 21] 1 praca domowa » 2014-12-22 15:07:16 Witam. Mam problem odnośnie 1 pracy domowej. A raczej 1 funkcji. Napisalem ładnie caly programik no i teraz chcialem zrobic funkcję która by sprawdzala czy podane liczby nie sa przypadkiem takie same. Jesli tak to jeszcze raz podawalo by sie liczbe. Jednak wyskakuje mi błąd, że nie zidentyfikowano ten funkcji w tym zakresie. Nie widzę tu żadnego błędu, wiec może coś wspomożecie. Co do samej funkcji saRozne() , to także możecie sprawdzić przy okazji czy byczków nie popelnilem. Oto mój kod: #include<iostream> #include<cstdlib> #include<ctime> using namespace std; void wczytaj( int zapis[] ) { int i = 0, a = 0; do { cin.sync(); cin.clear(); cin >> a; if( cin.good() && saRozne( zapis, i ) == true ) { zapis[ i ] = a; i++; } } while( i < 3 ); } bool saRozne( int zapis[], int i ) { if( i <= 0 ) return true; int a = 1, b = 0; do { b = 0; if( zapis[ a ] == zapis[ b ] || zapis[ b++ ] || zapis[ b += 2 ] ) return false; a++; } while( a < 3 ); return true; } bool czyWylosowana( int wylLicz[], int los, int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( los == wylLicz[ i ] ) return true; i++; } while( i < ile ); return false; } void dopisz( int zapis[], int wylLicz[], int ile ) { do { int los = zapis[ rand() % 3 ]; if( czyWylosowana( wylLicz, los, ile ) == false ) { wylLicz[ ile ] = los; ile++; } } while( ile < 2 ); } void wypisz( int wylLicz[], int wylos ) { cout << "Wypisanie wylosowanych 2 liczb z tablic: " << endl; do { cout << wylLicz[ wylos ] << endl; wylos++; } while( wylos < 2 ); } int main() { srand( time( NULL ) ); int zapis[ 3 ]; int wylLicz[ 2 ]; int wylosowanych = 0; wczytaj( zapis ); dopisz( zapis, wylLicz, wylosowanych ); wylosowanych = 0; wypisz( wylLicz, wylosowanych ); return 0; }
|
|
NopeDotAvi |
» 2014-12-22 16:38:44 Ponieważ, ta funkcja nie widzi żadnej deklaracji, kod jest czytany od góry do dołu, daj deklaracje tej funkcji pod using namespace std;
|
|
G4m3killer Temat założony przez niniejszego użytkownika |
» 2014-12-22 21:05:33 ok, dzięki. Ale jednak jeszcze jakis byczek popelnilem, bo program zatrzymal sie na ciaglym wczytywaniu :) Co tu nie tak? |
|
darko202 |
» 2014-12-23 00:27:26 A. Podstawowy błąd jaki popełniasz to niewiedza nad techniką szukania prostych błędów technika ta polega na 1. użyciu debugera 2. jeśli nie masz debugera, to szukając błędu pokazujesz wartości poszczególnych zmiennych, funkcji, obliczane warunki, pokazuje przebieg (oczywiście na czas szukania błędu) trochę to kosztuje, ale sam znajdziesz proste błędy Musisz się nauczyć z tego korzystać, bo droga nauki programowania polega na pisaniu coraz bardziej złożonych programów a w pewnym momencie czas staje się czynnikiem krytycznym B. błąd masz w saRozne( ) zastanów się : na jakiej podstawie stwierdzasz, czy wczytana przed chwilą liczba jest różna ? czy liczba ta jest dla Ciebie w tej funkcji dostępna ? dla ułatwienia zobacz jak powinna wyglądać realizacja tego o czym mówię w A bool saRozne( int zapis[], int i ) { cout << "1.\n"; if( i <= 0 ) { cout << "if( i <= 0 )\n"; return true; } int a = 1, b = 0; do { cout << "do\n"; b = 0; cout << "zapis[ a ] == zapis[ b ] " <<( zapis[ a ] == zapis[ b ] ) << "\n"; cout << "zapis[ b++ ] " << zapis[ b++ ] << "\n"; cout << "zapis[ b += 2 ] " << zapis[ b += 2 ] << "\n"; cout << "a " << a << "\n"; cout << "b " << b << "\n"; cout << "b++ " << b++ << "\n"; cout << " b += 2 " <<( b += 2 ) << "\n"; if( zapis[ a ] == zapis[ b ] || zapis[ b++ ] || zapis[ b += 2 ] ) { cout << "if( zapis[ a ] == zapis[ b ] || zapis[ b++ ] || zapis[ b += 2 ] )\n"; return false; } a++; } while( a < 3 ); return true; }
|
|
G4m3killer Temat założony przez niniejszego użytkownika |
» 2014-12-23 01:52:51 Dzięki :) Co do debugowania to nie umiem tego, bo tu w kursie tego nie miałem i jak narazie było mi zbyteczne, ale muszę się jeszcze nauczyć jak tego używać :) A co do funkcji to zrobiłem ją "na szybko". Teraz gdy chwilkę pomyślałem zobaczyłem co źle porobiłem :) Dzięki za pomoc. Taki debugger ułatwi z pewnością prace i zaoszczędzę dużo czasu.
|
|
« 1 » |