[ ruzno pace @ 19.05.2005. 15:16 ] @
Ovako...nisam neki ekspert u programiranju pa bih vas molio za pomoc ako mi mozete pomoci pri ovome zadatku...zadatak glasi:
Napraviti program koji ce ucitati matricu A dimenzija n*n,te izracunati:
a)aritmeticku sredinu dijagonalnih clanova matrice koji se nalaze izmedju najmanjeg i najveceg elementa u glavnoj dijagonali
b)geometrijsku sredinu dijagonalnih clanova matrice koji se nalaze izmedju najmanjeg i najveceg elementa na sporednoj dijagonali


Zadatak mozda i nije toliko slozen ali nemam pojma kako i sta da napravim zato bih vas molio za pomoc...hvala
[ DiscoNinja @ 23.05.2005. 01:57 ] @
Sta ti konkretno nije jasno. Zadatak nije nesto posebno slozen, ipak ne ocekujes valjda da ti neko odradi ceo zadatak i da ti posalje resenje... Jesi li probao nesto?
[ IronTIRANIN @ 24.05.2005. 06:18 ] @
U sredjoj skoli ucili nas turbo paskal i radili smo kilo ovakvih zadataka. Ako ti nesto znaci mogao bi da ti to dam u paskalu (ako uopste nadjem svesku) a ti posle prevedi u C++
[ dragansm @ 24.05.2005. 07:41 ] @
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.
[ Goran Arandjelovic @ 24.05.2005. 10:13 ] @
Ovim postom jesi i pomogao i odmogao coveku, jer je pitanje koliko ce se potruditi da ovo shvati, kada vec ima gotovo resenje.
[ dragansm @ 24.05.2005. 15:19 ] @
Nista nije tako crno-belo. Ukoliko ga bude zanimalo kako/zasto to radi (ako i radi, nisam ni istestirao) postavice pitanje bilo sebi ili vec ko mu se nadje. Sustina skole i nije da neko nauci milion formula, teorema, axioma... nego da nauci da se snalazi... a kao sto vidis njemu to odlicno ide. Sve je stvar izbora i afiniteta, a verujem da momcina ima neke druge planove u zivotu koji ne podrazumevaju "kompjuter je moj najbolji prijatelj"... Ne treba mnogo psihologije da naslutis kakav je njegov stav po tom pitanju. Svakako, nadam se da sam mu ulepsao dan :)
[ ruzno pace @ 27.05.2005. 19:48 ] @
E pajdo velika ti hvala,da si blize castio bih te picem...kako sam u velikoj strci sa ispitima i poslom a nemam vremena da ucim nesto sa strane zato sam zamolio za pomoc pri ovome zadatku,joj jednom velika HVALA
[ ruzno pace @ 31.05.2005. 14:53 ] @
Ej zanima me sa kojim si compilerom radio,jer pokusao sam sa borlandovim i od visual studia ali mi javlja niz gresaka
[ dragansm @ 31.05.2005. 15:33 ] @
VC 7.0:
Code:

// baci_me222.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#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 _tmain(int argc, _TCHAR* argv[])
{
    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);


    return 0;
}


[ BIG FOOT @ 28.06.2005. 16:42 ] @
Da ne otvaram novu temu:
Sta da include-ujem u gcc (linux), posto mi <math.h> ne prepoznaje.
--
My WebLog
> serbia.blogzy.com