Rozdział 22. Omówienie pętli for - zadanie
Ostatnio zmodyfikowano 2017-08-24 14:00
thomson92 Temat założony przez niniejszego użytkownika |
Rozdział 22. Omówienie pętli for - zadanie » 2017-08-24 13:26:20 Cytuje zadanie: "Napisz program który wykona wszystkie poniższe kroki w podanej kolejności: Losuje 10 liczb z przedziału od 10 do 30 włącznie i zapisuje je do tablicy; Wypisuje 10 wylosowanych liczb od początku do końca; Wypisuje 10 wylosowanych liczb od końca do początku; Znajduje najmniejszą oraz największą wylosowaną liczbę. Wypisuje najmniejszą i największą wylosowaną liczbę. Program nie może używać pętli innych niż pętla for." Wszystko idzie prawie idealnie. Porównuje do siebie te samą tablice: if( tab[ i ] > tab[ x + 1 ] ) x++; else i++;
i program wyswietla mi normalnie największą wartość: if( i == 9 || x == 8 ) { if( tab[ i ] > tab[ x + 1 ] ) cout << "najwieksza liczba z tablicy to1: " << tab[ i ] << " :" << i << endl; else cout << "najwieksza liczba z tablicy to2: " << tab[ x + 1 ] << " :" << x + 1 << endl; }
Niestety po wyświetleniu najwyższej wartości pętla ciągle się wykonuje (do ok. 11stego indeksu, któego tablica nie obejmuje) inkrementując "x" lub "i" w zależności od tego, która wartość wcześniej była mniejsza. Nie wiem co zrobiłem źle, może przekombinowałem przy tworzeniu warunków dla pętli for ponieważ tam nie umieściłem iteracji tylko wewnątrz pętli ponieważ w moim zamyśle jeżeli tab jest większe od tab[x + 1] (gdzie x = i) to program powinien iterować tylko "x" a nie "i" więc musiałem to zrobić w taki sposób.
Tutaj cała funkcja:
void petlafor() { int tab[ 10 ]; for( int i = 0; i < 10; i++ ) { tab[ i ] = rand() %( 30 - 9 ) + 10; cout << "liczba z tablicy nr" << i + 1 << " :" << tab[ i ] << endl; } for( int i = 9; i >= 0; i-- ) { cout << "Wartosci tablicy od konca " << i + 1 << " :" << tab[ i ] << endl; } int x = 0; for( int i = 0; i < 10 || x < 9; ) { cout << "wartosc i: " << i << endl; cout << "wartosc x: " << x + 1 << endl; if( tab[ i ] > tab[ x + 1 ] ) x++; else i++; if( i == 9 || x == 8 ) { if( tab[ i ] > tab[ x + 1 ] ) cout << "najwieksza liczba z tablicy to1: " << tab[ i ] << " :" << i << endl; else cout << "najwieksza liczba z tablicy to2: " << tab[ x + 1 ] << " :" << x + 1 << endl; } } }
Z góry dzieki za wszelkie podpowiedzi. |
|
karambaHZP |
» 2017-08-24 14:00:23 Do znalezienia największej i najmniejszej wartości użyj dodatkowej zmiennej. np: int max = tablica[ 0 ]; for( int i = 1; i < rozmiarTablicy; ++i ) { if( tablica[ i ] > max ) { max = tablica[ i ]; } } |
|
« 1 » |