[Praca domowa z rozdziału 22] Znalezienie największej wartości w tablicy
Ostatnio zmodyfikowano 2016-12-16 22:45
Luteres Temat założony przez niniejszego użytkownika |
[Praca domowa z rozdziału 22] Znalezienie największej wartości w tablicy » 2016-12-16 22:15:37 Nowa lekcja, nowe problemy. Tak powinien wyglądać kod funkcji main, więc nie chcę wprowadzać kolejnych funkcji (myślałem o bool do sprawdzania czy było coś większego). int main() { int tablica[ 10 ]; wylosujLiczby( tablica, 10 ); wypiszTablice( tablica, 10 ); wypiszTabliceOdTylu( tablica, 10 ); int iMin = znajdzMinimum( tablica, 10 ); int iMax = znajdzMaksimum( tablica, 10 ); wypiszMinMax( iMin, iMax ); return 0; } W moim kodzie pierwsza funkcja wyliczająca maksimum wykonuje się poprawnie, druga natomiast szwankuje. Jeśli dobrze myślę to dzieje się tak dlatego, że moja funkcja wyliczająca maksimum modyfikuje tablicę, ale nie mogę wpaść na to jak w inny sposób znaleźć maksimum/minimum.
#include <iostream> #include <cstdlib> #include <ctime> using namespace std;
void losujZapisz( int tablica[], int ile ) { for( int i = 0; i < ile; i++ ) { tablica[ i ] = rand() % 21 + 10; } }
void wypisz_od_poczatku( int tablica[], int ile ) { cout << "Od poczatku: " << endl; for( int i = 0; i < ile; i++ ) { cout << "Liczba " << i + 1 << " : " << tablica[ i ] << endl; } }
void wypisz_od_konca( int tablica[], int ile ) { cout << endl << "Od konca: " << endl; for( int i = 0; ile > i; ile-- ) { cout << "Liczba " << ile << " : " << tablica[ ile - 1 ] << endl; } cout << endl; }
int znajdzMax( int tablica[], int ile ) { for( int i = 0; i < ile; i++ ) { if( tablica[ i ] >= tablica[ i - 1 ] && i > 0 ) { cout << tablica[ i ] << " rowna lub wieksza od " << tablica[ i - 1 ] << endl; tablica[ i - 1 ] = tablica[ i ]; } if( tablica[ i ] < tablica[ i - 1 ] && i > 0 ) { cout << tablica[ i ] << " mniejsza od " << tablica[ i - 1 ] << endl; tablica[ i ] = tablica[ i - 1 ]; } } return tablica[ ile - 1 ]; }
int znajdzMin( int tablica[], int ile ) { for( int i = 0; i < ile; i++ ) { if( i == 0 ) cout << endl << "Pierwsza liczba: " << tablica[ i ] << endl; if( tablica[ i ] >= tablica[ i - 1 ] && i > 0 ) { cout << tablica[ i ] << " rowna lub wieksza od " << tablica[ i - 1 ] << endl; tablica[ i ] = tablica[ i - 1 ]; } if( tablica[ i ] < tablica[ i - 1 ] && i > 0 ) { cout << tablica[ i ] << " mniejsza od " << tablica[ i - 1 ] << endl; tablica[ i - 1 ] = tablica[ i ]; } } return tablica[ ile - 1 ]; }
int main() { srand( time( NULL ) ); int tablica[ 10 ]; losujZapisz( tablica, 10 ); wypisz_od_poczatku( tablica, 10 ); wypisz_od_konca( tablica, 10 ); cout << "Najwieksza liczba: " << znajdzMax( tablica, 10 ) << endl; cout << "Najmniejsza liczba: " << znajdzMin( tablica, 10 ); return 0; }
|
|
carlosmay |
» 2016-12-16 22:32:22 Do znalezienia maks i min potrzebujesz dodatkowej zmiennej w tych funkcjach. np. int maks( int tab[], int rozmiar ) { int maks = tab[ 0 ]; for( int i = 1; i < rozmiar; ++i ) { if( maks < tab[ i ] ) { maks = tab[ i ]; } } return maks; } |
|
Luteres Temat założony przez niniejszego użytkownika |
» 2016-12-16 22:45:35 Wielkie dzięki, nawet rozumiem dlaczego tak, teraz pięknie działa ;) |
|
« 1 » |