Tablice jednowymiarowe,
Ostatnio zmodyfikowano 2016-07-04 14:19
a_jasieniecki Temat założony przez niniejszego użytkownika |
Tablice jednowymiarowe, » 2016-07-02 20:20:29 Witam! Kolejny temat z tablicami, konkret zadanie domowe, naskrobałem coś co nie sumuje mi prawidłowo wartości tablic, przy danych z zadania wyskoczyła mi jakaś dziwna suma więc zmieniłem na losowanie od jeden w zakresie jeden(:)) i dalej lipka więc wpadłem na genialny pomysł że mimo zamknięcia aplikacji dane dalej gdzieś tam siedzą więc wrzuciłem pętlę która najpierw przypisywała wszystkie wartości na 0 ale i tak dostaje jakiś chory wynik. rzucicie na to okiem? #include <iostream> #include <ctime> #include <cstdlib>
using namespace std;
int main() { srand( time( NULL ) ); int liczby[ 999 ], licznik, suma; suma = 0; licznik = 0; do { licznik++; liczby[ licznik ] =( rand() % 1 ) + 1; cout << liczby[ licznik ] << endl; } while( licznik < 999 ); licznik = 0; cout << "Sumowanie" << endl; do { suma += liczby[ licznik ]; licznik++; } while( licznik < 999 ); cout << suma << endl; return 0; } |
|
a_jasieniecki Temat założony przez niniejszego użytkownika |
:) » 2016-07-02 20:25:35 Naprawiłem to w ten sposób że przy inicjalizacji tablicy przypisałem wartości początkowe na 0 int liczby[ 999 ] = { 0 }; Dzięki |
|
karambaHZP |
» 2016-07-02 21:23:58 Tylko zatuszowałeś niedoróbkę. Program i tak nie liczy prawidłowo. Błąd jest tutaj. Pomijasz pierwszy element tablicy przy zapisie losowanych wartości. licznik = 0;
do { licznik++; liczby[ licznik ] =( rand() % 1 ) + 1; cout << liczby[ licznik ] << endl; } while( licznik < 999 );
Inicjalizacja tablicy zerami spowodowała, że nie dodaje teraz przypadkowej wartości z liczby[0]. Inkrementuj wartość licznika po przypisaniu wartości do tablicy, bo pomijasz pierwszy element tablicy. Teraz sumowanie też jest nieprawidłowe, bo dodajesz o jedną wylosowaną wartość mniej. Zapoznaj się z techniką debugowania. |
|
a_jasieniecki Temat założony przez niniejszego użytkownika |
Dziękuje :) » 2016-07-04 10:33:09 Dzięki za odpowiedź myślałem że temat zamknięty i olałem dalej błędny wynik, zapominając iż w tablicy[999] jest tysiąc elementów. Sprawdziłem kilka wariacji w tym kodzie i opcja jest taka: int liczby[ 999 ], licznik, suma; suma = 0; licznik = 0
do { liczby[ licznik ] =( rand() % 1 ) + 1; licznik++; cout << licznik << ". " << liczby[ licznik - 1 ] << endl; } while( licznik <= 999 );
|
|
carlosmay |
» 2016-07-04 11:12:26 zapominając iż w tablicy[999] jest tysiąc elementów. |
Jest tyle elementów, ile jest zadeklarowane, czyli 999. |
|
a_jasieniecki Temat założony przez niniejszego użytkownika |
:) » 2016-07-04 11:46:09 do { liczby[ licznik ] =( rand() % 1 ) + 1; cout << licznik << ". " << liczby[ licznik ] << endl; licznik++; } while( licznik < 999 );
|
|
carlosmay |
» 2016-07-04 14:19:06 Dla licznika większego od 998 (ostatni w tablicy 999 elementów) wychodzisz poza zakres tablicy i program ma niedefiniowane zachowanie. |
|
« 1 » |