Rozdział 18 Praca Domowa część 2
Ostatnio zmodyfikowano 2014-07-09 21:04
wirusomaniak Temat założony przez niniejszego użytkownika |
Rozdział 18 Praca Domowa część 2 » 2014-07-09 17:24:33 #include <iostream> #include <cstdlib> using namespace std;
int main() { int liczba[ 999 ]; int losowe; int licznik = 0; do { srand( time( NULL ) ); int losowe =( rand() % 10 ) + 4; licznik++; } while( licznik < 999 ); std::cout << "Podales nastepujace liczby: "; licznik = 0; do { std::cout << liczba[ licznik ] << ", "; licznik++; } while( licznik < 999 ); licznik = 0; int zmienna = 0; int wynik = 0; do { liczba[ zmienna ] += wynik; zmienna++; licznik++; } while( licznik == 998 ); cout << "To jest suma wszystkich 999 liczb: " << wynik; return 0; } Gdy otwieram program zkomplikowany na podstawie tego kodu to suma wszystich liczb zawsze wynosi 0 dlaczego?! Co jest źle? |
|
Jacob99 |
» 2014-07-09 17:35:48 A jak ma być inaczej, skoro w tym: do { srand( time( NULL ) ); int losowe =( rand() % 10 ) + 4; licznik++; } while( licznik < 999 );
std::cout << "Podales nastepujace liczby: "; licznik = 0; do { std::cout << liczba[ licznik ] << ", "; licznik++; } while( licznik < 999 );
nigdzie nie wpisujesz danych do tablicy liczba ? Wynik tego wypisywania jest niezdefiniowany, bo w tej tablicy powinny być jakieś śmieci. P.S. chyba skompilowany ;) |
|
pekfos |
» 2014-07-09 17:56:05 int wynik = 0; do { liczba[ zmienna ] += wynik; zmienna++; licznik++; } while( licznik == 998 );
cout << "To jest suma wszystkich 999 liczb: " << wynik;
|
Nie modyfikujesz zmiennej wynik. |
|
wirusomaniak Temat założony przez niniejszego użytkownika |
» 2014-07-09 17:56:07 "nigdzie nie wpisujesz danych do tablicy liczba ?
Wynik tego wypisywania jest niezdefiniowany, bo w tej tablicy powinny być jakieś śmieci."
W takim razie jak mam wpisać dane do tablicy ? Sory ale wracam do tego kursu po długiej przerwie i podstawy trochę mi się zatarły w pamięci...
Pekfos mógłbyś trochę jaśniej bo niezbyt rozumiem? jak to nie modyfikuje przecieć dodaje wartości z tablicy do tej zmiennej i w ten sposób uzyskuje sume .....? nierozumiem.... o co ci chodzi z tą modyfikacją?? |
|
pekfos |
» 2014-07-09 17:58:36 W takim razie jak mam wpisać dane do tablicy ? Sory ale wracam do tego kursu po długiej przerwie i podstawy trochę mi się zatarły w pamięci... |
To wróć na początek. Jeśli mamy ci tłumaczyć, jak przypisać wartość zmiennej, to trafiłeś pod zły adres.. |
|
Jacob99 |
» 2014-07-09 17:59:25 No chyba chcesz z niej wyświetlać wylosowane liczby, więc w pętli do { srand( time( NULL ) ); int losowe =( rand() % 10 ) + 4; licznik++; } while( licznik < 999 );
musisz dodać linijkę liczba[ licznik ] = losowe; przed licznik++; |
|
wirusomaniak Temat założony przez niniejszego użytkownika |
» 2014-07-09 18:18:55 Pekfos mógłbyś trochę jaśniej bo niezbyt rozumiem? jak to nie modyfikuje przecieć dodaje wartości z tablicy do tej zmiennej i w ten sposób uzyskuje sume .....? nierozumiem.... o co ci chodzi z tą modyfikacją??
Jacob99 po odtworzeniu programu (z dodaniem tej linijki w kodzie ) wszystkie wylosowane liczby (999) są takie same????dlaczego? wynik jest nadal równy 0 ale to napewno dlatego ,że nie zmodyfikowałem tego wyniku lecz niezbyt rozumiem o co chodz... |
|
pekfos |
» 2014-07-09 18:25:54 Pekfos mógłbyś trochę jaśniej bo niezbyt rozumiem? jak to nie modyfikuje przecieć dodaje wartości z tablicy do tej zmiennej i w ten sposób uzyskuje sume .....? nierozumiem.... o co ci chodzi z tą modyfikacją?? |
do { srand( time( NULL ) ); int losowe =( rand() % 10 ) + 4; licznik++; } while( licznik < 999 );
|
Tu nie modyfikujesz (ba, nawet nie używasz nazwy) tablicy, do której masz wylosować liczby. Zamiast tego ładujesz wyniki losowania w zmienną, która nie istnieje poza tą pętlą. A do zmiennej wynik w całym kodzie nigdzie niczego nie dodajesz. Skoro podstawy poszły ci w las, to powtórz je, zamiast brnąć dalej w kurs z takimi efektami. Jacob99 po odtworzeniu programu (z dodaniem tej linijki w kodzie ) wszystkie wylosowane liczby (999) są takie same????dlaczego? |
Bo wpisał wywołanie srand() w pętle, gdzie tego nie powinno być. |
|
« 1 » 2 |