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;
}