Nadji negde i prepisi kako se tacno pise f-ja main i koje includove koristite na casu. Koliko god se trudio to nikad nisam upamtio (treba i wizard nesto da radi):
Code:
#include <stdio.h>
#include <math.h> // <-- najverovatnije stdio.h ga vec ukljucuje, ali ne smeta
#define N (5)
static float A[N][N];
void nadjiMinMax( int *minIdx, int *maxIdx, BOOL mainD )
{
float min, max;
min = max = A[0][mainD ? 0 : N - 1 ];
minIdx = maxIdx = 0;
for ( int i = 1; i < N; ++i )
{
if ( A[i][mainD ? i : N - i - 1] > max )
{
max = A[i][mainD ? i : N - i - 1];
maxIdx = i;
}
if ( A[i][mainD ? i : N - i - 1] < min )
{
min = A[i][mainD ? i : N - i - 1];
minIdx = i;
}
}
if ( minIdx > maxIdx )
{
int tmp = minIdx;
minIdx = maxIdx;
maxIdx = tmp;
}
}
int main ( int xx, int**aa)
{
int minIdx, maxIdx;
printf( "Unesi elemente matrice A:" );
for ( int i = 0; i < N*N; ++i ) scanf( "%f", &A[i/N][i%N] );
// elementi matrice moraju biti nenegativni da ne bi imao problem sa
// negativnim korenima
nadjiMinMax( &minIdx, &maxIdx, TRUE );
float s = 0.0f;
for ( int i = minIdx; i <= maxIdx; ++i, s += A[i][i] );
printf ( "\narit. sred = %f", s / (float)(maxIdx - minIdx + 1) );
float p = 1.0f;
nadjiMinMax( &minIdx, &maxIdx, FALSE );
for ( int i = minIdx; i <= maxIdx; ++i, p *= A[i][N - i - 1] );
float result = pow( p, 1.0f/(float)(maxIdx - minIdx + 1) );
// ako sam dobro upamtio geom. sredina je n-ti koren iz proizovda
// moze i
// float result = exp( log(p)/(float)(maxIdx - minIdx + 1) );
// ako je nekim cudom kvadratni koren proizvoda onda pisi
// float result = sqrt(p);
printf ( "\ngeom. sred = %f\n", result);
}
Ukucaj i kompajliraj program da proveris da li radi ispravno.