problem z diagonalą dodatkową
Ostatnio zmodyfikowano 2014-04-05 21:23
winio94 Temat założony przez niniejszego użytkownika |
problem z diagonalą dodatkową » 2014-04-05 18:40:07 Witam mam problem z pewna rzeczą. Otóż mam wypisać największy element każdej kolumny macierzy pod diagonalą dodatkową. Mój program wyświetla wszystko dobrze oprócz dwóch ostatnich elementów tj. ( zamiast -97 wyświetla -84 oraz zamiast -100 wyświetla -98. Warunek if(i+j>=10) mówi że suma indeksów ma być większa lub równa od 10 (to są elementy pod diagonalą dodatkową, nie działa dobrze dla pierwszego elementu :O Dlatego musiałem zmienić na >=9. Próbowałem różnych kombinacji zamiany indeksów itp, ale skutek jest taki sam. Bardzo proszę o pomoc w rozwikłaniu co tutaj można zmienić. Oto fragment kodu: { int j = 0; int i = 0; int min; int b = 0; for( j = 1; j < 10; j++ ) { for( i = 1; i < 9; i++ ) { if( i + j >= 9 ) { min = tab[ i ][ j ]; if( tab[ i + 1 ][ j ] <= min ) { min = tab[ i + 1 ][ j ]; b = i + 1; } } } cout << tab[ b ][ j ] << endl; plik << tab[ b ][ j ] << endl << endl; } } A to co program wyświetla(posortowana macierz a poniżej najmniejsze elementy, dobrze oprócz dwóch ostatnich :( Po sortowaniu 65 53 49 41 13 -18 -28 -46 -75 -94 76 71 60 54 50 23 -19 -35 -63 -76 91 89 44 6 -3 -3 -57 -67 -97-100 78 73 62 58 27 15 11 -20 -65 -66 91 75 30 15 13 -15 -55 -57 -65 -69 85 38 16 11 -26 -38 -54 -63 -66 -67 97 95 87 63 41 28 27 -23 -66 -85 70 64 38 27 13 12 2 -10 -58 -82 73 68 19 9 -34 -69 -73 -74 -84 -98 59 43 4 -26 -36 -38 -55 -70 -75 -89 elementy pod diagonala dodatkowa 43 4 -26 -36 -69 -73 -74 -84 -98 Pozdrawiam |
|
pekfos |
» 2014-04-05 20:51:33 for( i = 1; i < 9; i++ ) { if( i + j >= 9 ) { min = tab[ i ][ j ]; if( tab[ i + 1 ][ j ] <= min ) { min = tab[ i + 1 ][ j ]; b = i + 1; } } }
|
|
|
winio94 Temat założony przez niniejszego użytkownika |
» 2014-04-05 21:10:51 { int j = 0; int i = 0; int min; int b = 0; for( j = 1; j < 10; j++ ) { for( i = 1; i < 9; i++ ) { if( i + j >= 9 ) { if( tab[ i + 1 ][ j ] <= tab[ i ][ j ] ) { tab[ i ][ j ] = tab[ i + 1 ][ j ]; b = i + 1; } } } cout << tab[ b ][ j ] << endl; plik << tab[ b ][ j ] << endl << endl; } } Już nie ma :P program działa dokładnie tak samo :( |
|
pekfos |
» 2014-04-05 21:23:21 Zobacz, gdzie używasz b. W pewnym miejscu tego rażąco brakuje.
//Albo ja nie rozumiem tej pokręconej implementacji banalnego algorytmu. |
|
« 1 » |