Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Ile razy wykona się pętla? Rozdział 18 tablice jednowymiarowe

Ostatnio zmodyfikowano 2014-08-20 08:28
Autor Wiadomość
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
C/C++
#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.
P-115750
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.
P-115764
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.
P-115800
« 1 »
  Strona 1 z 1