Code:
#include <stdio.h>
#include <stdlib.h>
#define MAX_DIMENZIJA 9
#define DATOTEKA "matrica.txt"
int main(void)
{
int i, j, n=0, M[MAX_DIMENZIJA][MAX_DIMENZIJA], suma_elemenata=0;
FILE *ulaz;
float aritmeticka_sredina;
ulaz = fopen( DATOTEKA, "r" );
if ( ! ulaz )
{
printf( "Datoteka '%s' se ne moze otvoriti za citanje!\n", DATOTEKA );
getchar();
return 1;
}
if ( ! feof( ulaz ) )
fscanf( ulaz, "%d", &n );
if ( n<1 || n>MAX_DIMENZIJA )
{
printf( "Dimenzije matrice moraju biti u granicama od 1 do %d!\n", MAX_DIMENZIJA );
getchar();
return 1;
}
printf( "MATRICA JE DIMENZIJA: %dx%d\n", n, n );
for ( i=0; i<n*n && !feof( ulaz ) ; i++ )
{
fscanf( ulaz, "%d", &M[i/4][i%4] );
suma_elemenata += M[i/4][i%4];
}
if ( i < n*n )
{
printf( "Datoteka '%s' nema dovoljno podataka za formiranje matrice!\n", DATOTEKA );
getchar();
return 1;
}
for ( i=0; i<n*n; i++ )
{
printf( "%d\t", M[i/4][i%4] );
if ( i%4 == n-1 )
printf( "\n" );
}
printf("\nSUMA ELEMENATA MATRICE: %d\n", suma_elemenata );
aritmeticka_sredina = (float)suma_elemenata / (float)(n*n);
printf("\nARITMETICKA SREDINA ELEMENATA MATRICE: %.2f\n", aritmeticka_sredina );
printf("\n\nNOVA MATRICA:\n");
for ( i=0; i<n*n; i++ )
{
if ( (float)M[i/4][i%4] >= aritmeticka_sredina )
M[i/4][i%4] = 1;
else
M[i/4][i%4] = 0;
printf( "%d\t", M[i/4][i%4] );
if ( i%4 == n-1 )
printf( "\n" );
}
getchar();
return 0;
}
matrica.txt
4
11 15 3 4
8 6 7 5
9 10 1 12
13 14 2 16
MATRICA JE DIMENZIJA: 4x4
11 15 3 4
8 6 7 5
9 10 1 12
13 14 2 16
SUMA ELEMENATA MATRICE: 136
ARITMETICKA SREDINA ELEMENATA MATRICE: 8.50
NOVA MATRICA:
1 1 0 0
0 0 0 0
1 1 0 1
1 1 0 1