Rekurencja for loopa - dostęp do poszczególnych iteratorów
Ostatnio zmodyfikowano 2018-04-11 16:12
pajczur Temat założony przez niniejszego użytkownika |
Rekurencja for loopa - dostęp do poszczególnych iteratorów » 2018-04-11 09:50:33 Witam, chciałbym zrobić funkcję, która będzie zagnieżdżała for loopy wewnątrz for loopa i mieć jednocześnie dostęp do poszczególnych iteratorów. Próbowałem zrobić coś takiego stosując rekurencję, ale mam wrażenie, że kolejne zagnieżdżone lupy nie aktualizują iteratorów, które się zmieniają w nadrzędnych loopach. Próbowałem zrobić coś takiego, ale to nie działa tak jak bym sobie tego życzył: std::vector < int > it;
std::vector < int *> iter; for( int i = 0; i < it.size(); i++ ) { iter.push_back( & it( i ) ); }
int sweek = 0; int dup = 0;
void matrixRecursion() { int start = sweek; int end = matrix[ sweek ]; for( it( start ); it( start ) < end; it( start ) ++ ) { if( sweek < it.size() - 1 ) { sweek++; matrixRecursion(); } else { for( int t = 0; t < it.size(); t++ ) { dup += nIndex[ * iter[ t ] ]; } } } }
Co dokładnie chcę uzyskać? Zakładając, że it.size() jest równe np. 3, chciałbym, aby moja funkcja wykonała taką instrukcję: for( int i = 0; i < matrix[ 0 ]; i++ ) { for( int j = 0; j < matrix[ 1 ]; j++ ) { for( int k = 0; k < matrix[ 2 ]; k++ ) { dup += nIndex[ i ] + nIndex[ j ] + nIndex[ k ]; } } }
|
|
darko202 |
» 2018-04-11 12:46:38 1. Problemem w tym kodzie jest to że używasz zmiennych globalnych i używasz rekurencji. modyfikując zmienną globalną w n-tym kroku zmieniasz ją jednocześnie w n-1 krokach poprzedniego wywołania tej funkcji. napisz funkcję z parametrem np. int silnia( int n ) { return n * silnia( n - 1 ) }
2. zapoznaj się z techniką debugowania kodu dzięki temu będziesz mógł śledzić wykonanie programu linia po linii i obserwować stan wszystkich zmiennych. |
|
pekfos |
» 2018-04-11 16:12:24 kolejne zagnieżdżone lupy |
Lupy? W sensie, szkła powiększające..? Albo pisz poprawnie po polsku, albo wybierz sobie inny język. Pisząc tekst z takimi bykami wyrażasz brak szacunku. |
|
« 1 » |