multim Temat założony przez niniejszego użytkownika |
» 2015-07-24 19:22:21 ŻE CO? Jak tam się znalazł char? I kiedy? Dziękuję. Ale jak to sprawdzenie wykorzystać bez przekazania pozostałych danych, które są potrzebne do funkcji przypiszWynik()? |
|
pekfos |
» 2015-07-24 19:28:40 Nazwałeś funkcję 'sprawdz', więc tylko sprawdzaj. |
..czy ktokolwiek, wliczając ciebie, pisał, że masz w tym miejscu, w funkcji sprawdzającej, cokolwiek modyfikować..? Funkcja miała sprawdzać, czy jest obecna wartość t[idLosowania] [..] w tablicy z wynikami - wynikT[]. |
No nie bardzo. Wprowadź logikę do swoich prób i działań. Bez tego miałbyś już lepszy niż ostatnio powód do zastanawiania się, czy powinieneś się brać za programowanie. |
|
multim Temat założony przez niniejszego użytkownika |
» 2015-07-24 19:52:17 Przepraszam Was, dość wolno pojmuję. Ta funkcja ma wyglądać tak: bool sprawdzCzyUzyta( int sprLiczbe, int t[], int idLosowania, int ile ) { int i = 0; do { if( t[ i ] != sprLiczbe ) i++; else { return true; i++; } } while( i < ile ); return false; }
? |
|
pekfos |
» 2015-07-24 20:07:31 Tak. if( t[ i ] != sprLiczbe ) i++; else { return true; i++; }
|
Komplikujesz proste sprawy. Czemu nie tak..? if( t[ i ] == sprLiczbe ) return true;
++i; |
|
Szymon2727 |
» 2015-07-25 10:25:23 To normalne, że poległeś. Kurs trochę za mało wyjaśnia, ale czasami wystarczy poszukać rozwiązania - dużo uczy o tablicach i funkcjach.
Po pierwsze int main() - zrób w pętli warunek, który zwiększa tablicę po wylosowaniu prawidłowej liczby.
Po drugie, przekaż tą tablicę w funkcji i tutaj nie ma większego gdybania niż zrobienia if i else z zwracaniem wartości odpowiedzialne za zwiększanie się tablicy w int main() - po prostu niech porównuje jeden indeks do reszty - jeżeli a[1] == a[2] to zwraca fałsz i pętla odpowiedzialna za powiększenie liczby się nie wykonuje. |
|
JMII89 |
» 2015-07-25 10:55:09 A do tego przestań używać w każdej funkcji int jako zwracana wartość bo w tych funkcjach zwracasz 0. Dlatego powinny one być void nie int i bez return. |
|
multim Temat założony przez niniejszego użytkownika |
» 2015-07-25 13:54:07 Teraz będzie lepiej? #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
void wprowadzDane( int t[], int ile ) { cout << "Podaj " << ile << " liczby:" << endl; int i = 0; do { cin >> t[ i ]; i++; } while( i < ile ); }
int losuj( int ile ) { return rand() % ile; }
bool sprawdzCzyUzyta( int sprLiczbe, int t[], int ile ) { int i = 0; do { if( t[ i ] == sprLiczbe ) return true; i++; } while( i < ile - 1 ); return false; }
void wypiszWyniki( int t[], int ile ) { int i = 0; do { cout << i + 1 << ": " << t[ i ] << endl; i++; } while( i < ile - 1 ); }
int main() { srand( time( 0 ) ); int tablica[ 3 ], wynik[ 2 ], ile = 3, los, liczbaSpr, iLicznik = 0; wprowadzDane( tablica, ile ); cout << endl; do { los = losuj( ile ); liczbaSpr = tablica[ los ]; if( sprawdzCzyUzyta( liczbaSpr, wynik, ile ) == false ) { wynik[ iLicznik ] = liczbaSpr; iLicznik++; } } while( iLicznik < 2 ); cout << endl; wypiszWyniki( wynik, ile ); cout << endl; return 0; }
Zgaście mnie, bo nie wierzę. |
|
pekfos |
» 2015-07-25 16:44:21 void przypiszWynik( int sprLiczbe, int t[], int idPetli ) { t[ idPetli ] = sprLiczbe; }
|
Po co ci do tego funkcja? Po co odejmujesz 1 (w obu funkcjach)? if( sprawdzCzyUzyta( liczbaSpr, wynik, ile ) == false )
|
wypiszWyniki( wynik, ile );
| iLicznik, a nie ile. |
|
1 « 2 » 3 |