Mam pytanie dotyczące używania zmiennych pomocniczych w pętli obsługującej tablice. Poniżej przykład funkcji z książki Prata:
int fill_array(double ar[], int limit)
using namespace std;
double temp;
int i;
for (i O; i < limit; i++)
cout << "Podaj wartość nr " << (i + 1) << " · ";
cin >> temp;
if (!cin) {
cin.elear();
while (cin.get() != '\n')
continue;
cout << "Błędne dane, wprowadzanie danych przerwane.\n";
break;
else if (temp < 0) break;
ar[i] = temp;
return i;
}
Wartość przypisywana jest do zmiennej Temp a dopiero po wszystkich operacjach warunkowych przypisywana jest do tablicy. Ostatnio ktoś recenzował mój kod i otrzymałem zarzut wielokrotnej indeksacji. Dotyczyło to porównań kolejnych elementów tablicy w pętli for
. Zasugerowano mi najpierw w petli przypisanie wartości tablicy do zmiennej pomocniczej a później wykonywanie operacji porównań i warunków na zmiennej pomocniczej a nie na elemencie tablicy. Zastanawiam się w jaki sposób zwiększa to wydajność kodu, bo przy przypisaniu w pętli elementu tablicy za każdym razem trzeba "szperać" po indeksach i do tego trzeba tworzyc nową zmienną, chyba że porównania i warunki szybciej wykonuje się na prostych zmiennych niż na elementach tablic. Jeszcze mam jedno pytanie. Jeżeli znowu potrzebuje robić w pętli operacje na tablicach np. w pętli for taką operacje:
for (int i=0; i<n;i++)
if (tablica1[i+zmienna1-zmienna2+1]<tablica2[i+zmienna3-zmienna4+1]
......
to powinienem te skomplikowane indeksy będące wynikiem działania najpierw przypisać zmiennej pomocniczej, a później jako indeksu tablic użyć tej zmiennej pomocniczej, czyli
ZmiennaPomocnicza=i+zmienna1-zmienna2+1;
.....
if (tablica[ZmiennaPomocnicza]< itd.....