[Lekcja 18] Zadanie domowe - problem z rand()
Ostatnio zmodyfikowano 2012-03-01 20:50
V0ldek Temat założony przez niniejszego użytkownika |
[Lekcja 18] Zadanie domowe - problem z rand() » 2012-03-01 17:27:36 #include <iostream> #include <cstdlib> #include <ctime>
int wypelnij() { int tablicaWypelnij[ 999 ]; int licznik = 0; do { int wylosnik =(( rand() % 7 ) + 4 ); tablicaWypelnij[ licznik ] = wylosnik; licznik++; } while( licznik != 999 ); return tablicaWypelnij[ 999 ]; }
int licz() { int tablicaLicz[ 999 ]; tablicaLicz[ 999 ] = wypelnij(); int licznik = 0; int wylicznik = 0; int wynik = 0; do { wylicznik = wylicznik + tablicaLicz[ licznik ]; wynik = wynik + wylicznik; licznik++; } while( licznik != 999 ); return wynik; }
int wypiszLiczby() { int tablicaWypiszLiczby[ 999 ]; tablicaWypiszLiczby[ 999 ] = wypelnij(); int licznik = 0; do { int wypisznik =( licznik ) + 1; std::cout << wypisznik << ". ==> " << tablicaWypiszLiczby[ licznik ] << "\n"; licznik++; } while( licznik != 999 ); }
int wypiszWynik() { int wynik = licz(); std::cout << "Suma to: " << wynik; }
int wykonaj() { wypiszLiczby(); wypiszWynik(); }
int main() { srand( time( NULL ) ); wykonaj(); return 0; }
Po wywołaniu powyższego kodu, wylosowane liczby nie są z danego zakresu, tylko poprostu tak jakby z du*y wzięte... Gdzie popełniłem błąd? Jestem przekonany, że w funkcji wylosuj() ale nie jestem pewien... |
|
SeaMonster131 |
» 2012-03-01 17:48:29 tablicaWypiszLiczby[ 999 ] = wypelnij(); w funkcji wypiszLiczby(), musisz tutaj dla każdego elementu losować liczbę, a nie dla pierwszego. Poza tym w funkcji losującej nie potrzebnie dałeś tablicę, jak zwracasz jej ostatni element (albo nawet wychodzisz poza jej zakres). |
|
pekfos |
» 2012-03-01 17:48:49 tablicaWypiszLiczby[ 999 ] = wypelnij(); Zastanów się, co to robi.. |
|
V0ldek Temat założony przez niniejszego użytkownika |
» 2012-03-01 17:54:58 W takim razie, jak mam przesłać tablicę z wylosuj() do wypiszLiczby()? Czy muszę połączyć te funkcje? |
|
V0ldek Temat założony przez niniejszego użytkownika |
» 2012-03-01 20:50:15 Dobra, zacząłem pisać od początku i sprawdziłem czy można przekazywać tablice przez argumenty funkcji. Opracowałem taki kod: #include <iostream> #include <cstdlib> #include <ctime>
void fill( int tableFill[], int tableSizeFill ) { int i = 0; do { tableFill[ i ] =( rand() % 7 ) + 4; i++; } while( i < tableSizeFill ); }
int add( int tableAdd[], int tableSizeAdd ) { int i = 0; int sum = 0; do { sum = sum + tableAdd[ i ]; i++; } while( i < tableSizeAdd ); return sum; }
void printTable( int tablePrintTable[], int tableSizePrintTable ) { int i = 0; do { int num = i; num++; std::cout << num << ". ==> " << tablePrintTable[ i ] << "\n"; i++; } while( i < tableSizePrintTable ); }
void printSum( int sum ) { std::cout << "Suma tych liczb to: " << sum; }
int main() { srand( time( NULL ) ); int tableSizeMain = 999; int tableMain[ 999 ]; int sum = 0; fill( tableMain, tableSizeMain ); std::cout << "Liczby to: \n"; printTable( tableMain, tableSizeMain ); sum = add( tableMain, tableSizeMain ); printSum( sum ); return 0; }
I działa! EDIT: Jakie było moje zaskoczenie gdy następna lekcja była właśnie o tym ;D. Tej lekcji nie zapomnę, popełniłem wszystkie możliwe błędy... Dzięki wam, zamykam temat. |
|
« 1 » |