Pętla for - problem ze znalezieniem najmniejszej i najwiekszej liczby
Ostatnio zmodyfikowano 2012-08-04 15:55
jhrwekuh Temat założony przez niniejszego użytkownika |
Pętla for - problem ze znalezieniem najmniejszej i najwiekszej liczby » 2012-07-25 19:30:29 Tak jak w temacie. Po skompilowaniu ponizszego kodu jest blad. Jesli znajduje sie liczba 10 i 30 wszystko jest ok. Jak nie ma ktorejs z liczb pojawia sie 0. Gdzie jest blad? #include <iostream> #include <cstdlib> #include <ctime>
int wylosujLiczby( int iTablica[], int ile ) { for( int licznik = 0; licznik < ile; licznik++ ) iTablica[ licznik ] =( rand() % 21 ) + 10; }
void wypiszTablice( int iTablica[], int ile ) { for( int licznik = 0; licznik < ile; licznik++ ) { std::cout << iTablica[ licznik ] << ", "; } std::cout << "." << std::endl; }
void wypiszTabliceOdTylu( int iTablica[], int ile ) { int a = 9; for( int licznik = 20; licznik > ile; licznik-- ) { std::cout << iTablica[ a ] << ", "; a--; } std::cout << "." << std::endl; }
int znajdzMinimum( int iTablica[], int ile ) { for( int b = 0; b < 20; b++ ) { int a = 10; for( int licznik = 0; licznik < ile; licznik++ ) { if( iTablica[ licznik ] == a ) return iTablica[ licznik ]; } a++; } }
int znajdzMaksimum( int iTablica[], int ile ) { for( int b = 0; b < 20; b++ ) { int a = 30; for( int licznik = 0; licznik < ile; licznik++ ) { if( iTablica[ licznik ] == a ) return iTablica[ licznik ]; } a--; } }
void wypiszMinMax( int Min, int Max ) { std::cout << "Najmniejsza liczba to: " << Min << std::endl; std::cout << "Najwieksza liczba to: " << Max << std::endl; }
int main() { srand( time( 0 ) ); 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; }
|
|
jsc |
» 2012-07-25 20:07:52 Przyjrzyj się temu kodowi: int znajdzMinimum( int iTablica[], int ile ) { for( int b = 0; b < 20; b++ ) { int a = 10; for( int licznik = 0; licznik < ile; licznik++ ) { if( iTablica[ licznik ] == a ) return iTablica[ licznik ]; } a++; } }
|
|
tirou |
» 2012-08-02 18:20:09 w tym powyzszym kodzie uzywasz kolego dziwnego algorytmu.
Jestem laikiem ale zauważyłem, iż w tym warunku : if( iTablica[ licznik ] == a return iTablica[ licznik ]; jezeli iTablica[0] ma w sobie wartosc inna niz a (czyli 10) to zwraca ci zero. Slabo jeszcze mysle po "programistycznemu" ale spróbuj przeanalizować takie cudeńko:
int znajdzMinimum( int iTablica[], int ile ) { int min = iTablica[ 0 ]; for( int i = 0; i < ile; i++ ) { min = iTablica[ i ] < min ? d[ i ]: min; } return min; } |
|
jsc |
» 2012-08-02 18:44:14 Pomijając linijkę: min = iTablica[ i ] < min ? d[ i ]: min;
To dobrze kombinujesz. |
|
tirou |
» 2012-08-02 23:20:14 ja? czy kolega z problemem ? ;p |
|
jsc |
» 2012-08-03 14:07:23 Ty. |
|
tirou |
» 2012-08-03 15:41:29 a wyjasnisz jak kombinuje i co jest jeszcze nie do konca poprawnie? :) |
|
Netro |
» 2012-08-03 16:04:45 int znajdzMinimum( int iTablica[], int ile ) { int min = iTablica[ 0 ]; for( int i = 0; i < ile; i++ ) { } return min; }
|
|
« 1 » 2 |