Macierz diagonalnie dominujaca funkcja

0

Program pobiera liczby do tablicy 5x5, a potem liczy czy macierz jest diagonalnie dominujaca. W macierzy diagonalnie dominującej dla każdego wiersza moduł elementu na diagonali jest większy od sumy modułów pozostałych elementów macierzy w tym wierszu.
Moja funkcja dd_test zawsze zwraca 0, chociaz sa odpowiednie warunki na to zeby tylko w poszczegolnych przypadkach tak zwracala. sumadiag - wartosc modulu na przekatnej, sumawierzy - suma wartosci wierszy z modulow.

Podaj liczby:
5 1 1 1 1
1 5 1 1 1
1 1 5 1 1
1 1 1 5 1
1 1 1 1 5
NIE
#include <stdio.h>
#include <stdlib.h>

int dd_test( const int * ptr, int width, int height );

int main()
{
    int i, height = 5, width = 5, tab[ 25 ];
    int * ptr;
    ptr = tab;
    
    printf( "Podaj liczby: \n" );
    for( i = 0; i < 25; i++ )
    {
        scanf( "%d", ptr + i );
    }
    
    switch( dd_test( ptr, width, height ) )
    {
    case 0:
        printf( "NIE" );
        break;
    case 1:
        printf( "TAK" );
        break;
        default:
        printf( "Blad" );
        break;
    }
    return 0;
    
    
}

int dd_test( const int * ptr, int width, int height )
{
    if( width != height || ptr == NULL ) return - 1;
    
    int i, j, sumadiag = 0, sumawierszy = 0;
    
    for( i = 0; i < height; i++ )
    {
        for( j = 0; j < width; j++, ptr++ )
        {
            if( i == j )
            {
                sumadiag += abs( * ptr );
            }
            else
            {
                sumawierszy += abs( * ptr );
            }
            if( sumadiag <= sumawierszy )
            {
                return 0;
            }
        }
    }
    return 1;
}
0

Musisz napisać, czego się spodziewałeś a co wyszło i dla jakich danych. Skąd mamy wiedzieć, na czym polega błąd...?

0

Moja funkcja dd_test zawsze zwraca 0, chociaz sa odpowiednie warunki na to zeby tylko w poszczegolnych przypadkach tak zwracala. sumadiag - wartosc modulu na przekatnej, sumawierzy - suma wartosci wierszy z modulow.

0

ktos cos?

0

Przenieś:

            if( sumadiag <= sumawierszy )
            {
                return 0;
            }

Za pętle w funkcji dd_test.

0
kapojot napisał(a):

Przenieś:

            if( sumadiag <= sumawierszy )
            {
                return 0;
            }

Za pętle w funkcji dd_test.

Dziala, dzieki bardzo

1 użytkowników online, w tym zalogowanych: 0, gości: 1