snajperek130 Temat założony przez niniejszego użytkownika |
Problem ze zrozumieniem przykładu z rozdziału 21 i zadania. » 2014-06-18 13:19:10 Szukałem po forum i troche juz opisalem kod, ale sa czesci opisane pytajnikami, ktorych nie rozumiem. W pierwszym jak nastepuje sprawdzenie, czy liczba byla? Prosze o dokladny opis, bo nie moge tego zczaic i siedze juz nad tym bardzo dlugo. Co do drugiej czesci to powoli cos zaczynam rozumiec, ale takze prosilbym o dobry opis dzialania. #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++; } } while( wylosowanych < 5 ); wylosowanych = 0; do { std::cout << wylosowane[ wylosowanych ] << std::endl; wylosowanych++; } while( wylosowanych < 5 ); return 0; }
|
|
pekfos |
» 2014-06-18 16:56:59 W pierwszym jak nastepuje sprawdzenie, czy liczba byla? Prosze o dokladny opis |
Tak. Dokładniejszy opis masz w swoim komentarzu.. wylosowane[ wylosowanych ] = liczba;
|
Jak kilka linii niżej wyraźnie widać - nie.. |
|
snajperek130 Temat założony przez niniejszego użytkownika |
» 2014-06-19 22:24:21 Ok, zeby nie robic znowu tematu wykonuje zadanie z tej lekcji i nie powiem, ciezki to temat :/. Posilkowalem sie troche przykladem, i wyszedl mi taki kod, gdzie zrobilem blad?? Jeszcze bede nad tym siedzial, bo nie ukrywam trudny to dla mnie temat :/: #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
bool sprawdzenie( int liczba, int tablica2[], int ile ) { if( ile <= 0 ) { return true; } else if( ile > 0 ) { int l = 0; do { if( liczba = tablica2[ l ] ) return false; l++; } while( 1 != ile ); return true; } } int wpisz( int tablica1[] ) { cout << "Wpisz 3 liczby:"; int l = 0; do { cin >> tablica1[ l ]; l++; } while( l < 3 ); return tablica1[ l ]; } int losuj( int tablica1[] ) { int a = rand() % 3; int b = tablica1[ a ]; return b; }
void wypisz( int tablica1[], int tablica2[] ) { cout << "Liczby podane:" << tablica1[ 0 ] << "" << tablica1[ 1 ] << "" << tablica1[ 2 ] << endl; cout << "Liczby wylosowane:" << tablica2[ 0 ] << "" << tablica2[ 1 ] << endl; } int main() { srand( time( NULL ) ); int tablica1[ 3 ]; int tablica2[ 2 ]; wpisz( tablica1 ); int l = 0; do { int liczba = losuj( tablica1 ); tablica2[ l ] = liczba; if( sprawdzenie( liczba, tablica2, l ) == true ) l++; } while( l < 2 ); wypisz( tablica1, tablica2 ); return 0; }
|
|
pekfos |
» 2014-06-19 22:35:12 Założyłeś temat na forum bez zapoznania się z zasadami.. Jaki błąd? Co nie działa? Chcesz otrzymać odpowiedź, czy tracić czas? |
|
snajperek130 Temat założony przez niniejszego użytkownika |
» 2014-06-19 22:47:08 Po wprowawadzeniu 3 liczb przez uzytkownika program sie wiesza i nie da sie nic wpisac. Podejrzewam, ze blad musi byc gdzies w funkcji "sprawdzenie". |
|
pekfos |
» 2014-06-19 23:03:34 if( liczba = tablica2[ l ] )
|
Zły operator. Nie możesz tak zrobić. Nie ma nawet po co. |
|
snajperek130 Temat założony przez niniejszego użytkownika |
» 2014-06-20 16:23:23 Dzieki, jestem juz blisko, tylko druga liczba jest losowana z tych 3 liczb, a nie powinna sie powtarzac. Jeszcze bede to analizowal, ale jak znajdziesz blad to pisz. #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
bool sprawdzenie( int liczba, int tablica2[], int ile ) { if( ile <= 0 ) { return true; } else { int l = 0; do { if( liczba != tablica2[ l ] ) l++; return true; } while( l != ile ); return true; } } int wpisz( int tablica1[] ) { cout << "Wpisz 3 liczby:"; int l = 0; do { cin >> tablica1[ l ]; l++; } while( l < 3 ); } int losuj( int tablica1[] ) { int a = rand() % 3; int b = tablica1[ a ]; return b; }
int wypisz( int tablica1[], int tablica2[] ) { cout << "Liczby podane:" << endl; cout << tablica1[ 0 ] << endl; cout << tablica1[ 1 ] << endl; cout << tablica1[ 2 ] << endl; cout << "Liczby wylosowane:" << endl; cout << tablica2[ 0 ] << endl; cout << tablica2[ 1 ] << endl; } int main() { srand( time( NULL ) ); int tablica1[ 3 ]; int tablica2[ 2 ]; wpisz( tablica1 ); int l = 0; do { int liczba = losuj( tablica1 ); tablica2[ l ] = liczba; if( sprawdzenie( liczba, tablica2, l ) == true ) l++; } while( l != 2 ); wypisz( tablica1, tablica2 ); return 0; }
edit Niestety nie znalazlem przyczyny, wedlug mnie powinno dzialac :/. |
|
pekfos |
» 2014-06-20 22:29:26 do { if( liczba != tablica2[ l ] ) l++; return true; } while( l != ile );
| return..? |
|
« 1 » 2 |