lekcja 18 tablice jednowymiarowe blad sumy
Ostatnio zmodyfikowano 2017-01-27 16:52
ppczosnek Temat założony przez niniejszego użytkownika |
lekcja 18 tablice jednowymiarowe blad sumy » 2017-01-26 18:49:46 Witam, Mam problem z zadaniem z lekcji 18 - tablice jednowymiarowe. Wszystko działa oprócz sumy wszystkich liczb. działa niepoprawnie ponieważ wynik który zawsze pokazuje jest równy koło 1003. próbowałem też wynik zamieszczać pod zmienną zamiast ponownie pod tablica[] lecz efekt był taki sam. Nie wiem gdzie robię błąd, czy można prosić o pomoc? using namespace std;
int losowanie() { int los; los =( rand() % 7 ) + 4; return los; }
int main() { srand( time( NULL ) ); int tablica[ 999 ]; int ilosc = 999; int i = 0; int j = 0; int k = 0; int suma[ 999 ]; do { tablica[ i ] = losowanie(); cout << "liczba " << k << " : " << tablica[ i ] << endl; i++; k++; } while( i < 999 ); int h = 0; do { suma[ h ] = tablica[ j ] + tablica[ j + 1 ]; j++; h++; } while( j < 999 ); cout << "wynik tablicy to: " << suma[ 998 ] << endl; return 0; }
tutaj wynik komplilatora: liczba 986 : 10 liczba 987 : 9 liczba 988 : 4 liczba 989 : 8 liczba 990 : 4 liczba 991 : 4 liczba 992 : 6 liczba 993 : 9 liczba 994 : 5 liczba 995 : 8 liczba 996 : 7 liczba 997 : 9 liczba 998 : 9 wynik tablicy to: 1008
Process returned 0 (0x0) execution time : 0.918 s Press any key to continue.
|
|
mateczek |
» 2017-01-26 19:22:55 int suma = 0; for( int i = 0; i < 999; i++ ) { suma = suma + tablica[ i ]; } |
|
ppczosnek Temat założony przez niniejszego użytkownika |
» 2017-01-26 20:10:52 Dziękuję za odpowiedź. Tylko jest mały problem pętle for są w lekcji 21, więc nie mogę ich tutaj użyć. Czy można to inaczej rozwiązać? |
|
mateczek |
» 2017-01-26 20:32:08 ale z ciebie formalista :P int i = 0; int suma = 0; while( i < 999 ) { suma = suma + tablica[ i ]; i++; } |
|
karambaHZP |
» 2017-01-26 21:18:07 Pętla while() { } jest jeszcze dalej ;) int i = 0; int suma = 0; do { suma = suma + tablica[ i ]; i++; } while( i < 999 ); |
|
ppczosnek Temat założony przez niniejszego użytkownika |
» 2017-01-27 14:07:04 Niestety rozwiązanie karamby się nie sprawdza. nadal suma 999 liczba 994 : 9 liczba 995 : 4 liczba 996 : 6 liczba 997 : 5 liczba 998 : 4 wynik tablicy to: 999
Process returned 0 (0x0) execution time : 1.030 s Press any key to continue.
Sprawdzilem tez rozwiazanie mateczek lecz suma rowna sie 0 liczba 994 : 6 liczba 995 : 6 liczba 996 : 5 liczba 997 : 6 liczba 998 : 5 wynik tablicy to: 0
Process returned 0 (0x0) execution time : 1.021 s Press any key to continue.
Macie jakieś pomysły co może być powodem? |
|
mateczek |
» 2017-01-27 15:21:39 rozwiązanie się sprawdza. Tylko Ty coś nakopałeś gdy je wstawiałeś do swojego kodu. #include<iostream> #include<cmath> using namespace std;
int losowanie() { int los; los =( rand() % 7 ) + 4; return los; }
int main() { srand( time( NULL ) ); const int size = 5; int tablica[ size ]; int i = 0; do { tablica[ i ] = losowanie(); cout << "liczba " << i << " : " << tablica[ i ] << endl; i++; } while( i < size ); i = 0; int suma = 0; do { suma = suma + tablica[ i ]; i++; } while( i < size ); cout << "suma= " << suma << endl; }
oczywiście aby policzyć sumę losowanych liczb wcale nie trzeba tablicy #include<iostream> #include<cmath> using namespace std;
int losowanie() { return( rand() % 7 ) + 4; }
int main() { srand( time( NULL ) ); int ileLiczb = 5; int suma = 0; do { int temp = losowanie(); cout << temp << " "; suma += temp; } while( --ileLiczb ); cout << "\nsuma wylosowanych wynosi " << suma << endl; }
|
|
ppczosnek Temat założony przez niniejszego użytkownika |
» 2017-01-27 16:52:34 Okej już wiem co było nie tak. Po pierwszej pętli do... while... nie zerowałem wartości i - chyba dlatego suma zawsze była koło jednego tysiąca dla 999 wartości. Dzięki za zainteresowanie się tematem i pomoc.
Pozdrawiam! |
|
« 1 » |