Zadanie nr.18 z kursu.
Ostatnio zmodyfikowano 2014-10-08 14:47
Andy20 Temat założony przez niniejszego użytkownika |
Zadanie nr.18 z kursu. » 2014-10-04 00:01:02 Witam. Jestem przy zadaniu nr 18 oto mój kod: #include<iostream> #include<cstdlib> #include<ctime> using namespace std;
int main() { srand( time( NULL ) ); int tab[ 999 ]; int licz = 0; int suma = 0; do { tab[ licz ] =(( rand() % 7 ) + 4 ); cout << tab[ licz ]; licz++; } while( licz < 999 ); licz = 0; do { suma = suma + tab[ licz ]; licz++; } while( licz < 999 ); cout << "\n Wynik to: " << suma; cin.get(); }
Chciałbym zapytać co w tym programie daje wyzerowanie zmiennych Jak nie dodam tej linijki to wychodzi mi jakiś dziwny wynik i za każdym razem ten sam. Bardzo bym prosił o jakieś wytłumaczenie |
|
grzeso |
» 2014-10-04 00:12:11 Musisz nadać im jakąś początkową wartość, bo jak tego nie zrobisz to wychodzą głupoty. Jak nie nadasz początkowej wartości to tak jakbyś od czegoś przypadkowego zaczynał liczyć (czy tam robić to co tam robisz) |
|
marianekA |
» 2014-10-04 00:22:02 To bardzo proste... Zmienna 'Licz' po opuszczeniu pierwszej pętli osiąga maksymalną wartość czyli w tym przypadku 998 i z taką wartością przejdzie do drugiej pętli jeśli nie została wyzerowana i wtedy druga pętla nie ma sensu. |
|
Andy20 Temat założony przez niniejszego użytkownika |
» 2014-10-04 00:25:25 Ok :) rozumiem, dzięki za odpowiedź. |
|
Mateus. |
» 2014-10-04 09:36:17 Można też nie zerować i użyć dekrementacji. |
|
Memento96 |
» 2014-10-08 14:37:35 Można też nie zerować i użyć dekrementacji. |
Ale po co tworzyć nową pętle żeby zdekrementować do wartości 0? |
|
Rashmistrz |
» 2014-10-08 14:47:34 Ale po co tworzyć nową pętle żeby zdekrementować do wartości 0? |
Nie trzeba nowej... Usunie się zerowanie i zamiast inkrementacji użyje się dekrementacji w drugiej pętli, czyli tej przed którą występowało zerwanie. :F |
|
« 1 » |