Rozpoznawanie największej liczby.
Ostatnio zmodyfikowano 2014-01-05 15:30
Kudłaty Temat założony przez niniejszego użytkownika |
Rozpoznawanie największej liczby. » 2014-01-04 18:41:46 Siema, pracuję nad prostym programem i natknąłem się na problem, mam dwie tablice z liczbami, z każdej muszę znaleźć największą liczbę, a tablice a i b mieszczą po 5 liczb. Oto kod: for( int j = 0; j < 5; j++ ) { for( int k = 0; k <= j; k++ ) { if( a[ j ] > a[ k ] ) { najwiekszy_a = j; } if( b[ j ] > b[ k ] ) { najwiekszy_b = j; } } najwiekszy_a = 0; najwiekszy_b = 0; }
Dla przetestowania programu wprowadziłem takie liczby, w tablicach a[] { 1, 2, 3, 4, 5 } oraz b[] { 1, 2, 3, 4, 5 } problem mam taki, że z początku pokazuje mi największe liczby dla a: 5 a dla b: 5 a następnie wszystkie liczby podawane są w odwrotnej kolejności, od najmniejszej do największej. |
|
pekfos |
» 2014-01-04 18:44:32 Co to za algorytm? Na pewno nie wyszukiwanie maksimum z tablicy. |
|
Kudłaty Temat założony przez niniejszego użytkownika |
» 2014-01-04 18:59:02 Wyszukuje największą wartość z tablicy, w obliczeniach dodaje ją do wyniku i później zeruje wartość którą dodałem, żeby program nie wyszukiwał znowu tej samej wartości. |
|
pekfos |
» 2014-01-04 19:07:25 To nie wygląda na wyszukiwanie największej wartości. Podaj kod. |
|
Kudłaty Temat założony przez niniejszego użytkownika |
» 2014-01-04 19:23:13 for( int i = 0; i < 5; i++ ) { for( int j = 0; j < 5; j++ ) { for( int k = 0; k <= j; k++ ) { if( a[ j ] > a[ k ] ) { najwiekszy_a = j; } if( b[ j ] > b[ k ] ) { najwiekszy_b = j; } } } if( a[ najwiekszy_a ] >= b[ najwiekszy_b ] ) { wynik += a[ najwiekszy_a ]; a[ najwiekszy_a ] = 0; } else { if( a[ najwiekszy_b ] ) { wynik += a[ najwiekszy_b ]; a[ najwiekszy_b ] = 0; } else { wynik += b[ najwiekszy_b ]; b[ najwiekszy_b ] = 0; } } najwiekszy_a = 0; najwiekszy_b = 0; }
|
|
Kudłaty Temat założony przez niniejszego użytkownika |
» 2014-01-05 15:30:26 Porównywałem kod do innych na cpp0x, jedyna różnica dla mnie zauważalna to to, że ja zapisuje numer tablicy. A nadal nie wiem dlaczego program wariuje. /edit Jednak dostrzegłem jeden szczegół oto poprawka: for( int j = 0; j < N; j++ ) { if( a[ najwiekszy_a ] < a[ j ] ) { najwiekszy_a = j; } if( b[ najwiekszy_b ] < b[ j ] ) { najwiekszy_b = j; } }
|
|
« 1 » |