Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

problem z diagonalą dodatkową

Ostatnio zmodyfikowano 2014-04-05 21:23
Autor Wiadomość
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:
C/C++
{
   
    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
P-107752
pekfos
» 2014-04-05 20:51:33
C/C++
for( i = 1; i < 9; i++ )
{
    if( i + j >= 9 )
    {
        min = tab[ i ][ j ]; /// Dlaczego to jest w pętli?
        if( tab[ i + 1 ][ j ] <= min )
        {
            min = tab[ i + 1 ][ j ];
            b = i + 1;
        }
    }
   
}
P-107761
winio94
Temat założony przez niniejszego użytkownika
» 2014-04-05 21:10:51
C/C++
{
   
    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 :(
P-107762
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.
P-107763
« 1 »
  Strona 1 z 1