Ile razy wykona się pętla? Rozdział 18 tablice jednowymiarowe
Ostatnio zmodyfikowano 2014-08-20 08:28
jizzle Temat założony przez niniejszego użytkownika |
Ile razy wykona się pętla? Rozdział 18 tablice jednowymiarowe » 2014-08-19 19:39:55 #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
int main() { srand( time( NULL ) ); short suma = 0; int t[ 999 ]; short i = 0; do { t[ i ] =( rand() % 7 + 4 ); i++; } while( i < 999 ); do { cout << t[ i ] << endl; i--; } while( i > 0 ); do { suma += t[ i ]; i++; } while( i < 999 ); cout << suma; return 0; }
chodzi o środkową pętlę, tę, która wypisuje na ekranie. Czy gdy zmienna 'i' spadnie do 1, to wykona się ona jeszcze raz i wypisze t[1], ale t[0] już nie? Zamienienie tych instrukcji miejscami rodzi ten sam problem z t[998], natomiast ustalenie warunku na i>=0 spowoduje, że na początku następnej pętli indeks byłby -1. Ciekawy pomysł na optymalizację, ale właśnie tego nie jestem pewien. |
|
pekfos |
» 2014-08-19 20:35:42 Zamienienie tych instrukcji miejscami rodzi ten sam problem z t[998], |
Znaczy, że nie wypisze t[998]? Nieprawda. Ciekawy pomysł na optymalizację |
Przez usunięcie jednej modyfikacji zmiennej na cały program..? W ogóle nie o to w tym chodzi. |
|
alixir |
» 2014-08-20 08:28:00 Wszystkie pętle wykonają się dokładnie tą samą ilość razy (999 w twoim przypadku), lecz w pętli pierwszej i trzeciej zmienna "i" przyjmie wartości od 0 do 998, natomiast w pętli drugiej będą to wartości od 999 do 1. Jeśli chciałbyś robić to w ten sposób to w drugiej pętli musiałbyś wypisywać element t[i-1] i wszystko będzie ok. |
|
« 1 » |