[ PampeL @ 24.08.2009. 22:30 ] @
Pozdrav svima!
Treba mi pomoc oko rjesavanja problema sa sabiranjem dvije matrice 2x2 ciji su elementi razlomci. Za pocetak mi ne treba konacno rjesenje, nego smjernice oko rjesavanja problema.
Prvi problem koji me muci je to sto svaki element matrice treba da ima brojilac i imenilac, valjda ovako:
a[1][1].br
a[1][1].im

Pokusao sam napraviti strukturu, npr.

struct razlomak {
float br, im
}

Dalje bih trebao definisati matricu a[2][2], ali kao sto svi vidite to ne moze bas tako, jer na ovaj nacin nisam definisao da su pojedinacni elementi matrice zapravo po dva broja (brojilac i imenilac).

Mozda ovako:
int main
struct razlomak a[2][2];
unos (a);


a onda definisati unos
void unos (struct razlomak a[][]) ... - ovdje je problem. Da nije matrica, da je niz, onda ne bi bio problem, jer sa a[] radi. Vjerovatno ja ovdje pravim gresku, buduci da sam pocetnik u ovome.


dalje slijedi unos..., to nije problem.

Sabiranje, isto tako, ne bi trebalo da predstavlja problem. Eventualno na kraju, ako ovo uspijem rijesiti, mozda mi zatreba pomoc oko skracivanja razlomaka u konacnoj matrici, medjutim, to mi nije toliko neophodno.

Svaka pomoc je dobrodosla.
Hvala!
[ Goran Arandjelovic @ 25.08.2009. 02:49 ] @
Da, problem je u deklaraciji tvoje f-je "unos".

Treba da izgleda ovako:

Code:

void unos(struct razlomak x[][2]);


to je ekvivalentno ovome:

Code:

void unos(struct razlomak (*x)[2]);


a poziv:

Code:

int main()
{
  struct razlomak a[2][2];

  unos(a);
}


Dakle, poenta je u ovome da se unutar poziva unos(a), ovo 'a' čita kao "adresa niza čiji su elementi dvočlani nizovi".
Shodno tome, tvoja funkcija treba kao argument da ima pokazivač na niz (s nepoznatim brojem elemenata) čiji su elementi dvočlani nizovi, što ti je gore i dato.
--
Pretpostavljam da je u pitanju C, a ne C++, tako da ne moraš i pored toga svuda da ponavljaš "struct razlomak", već strukturu deklariši ovako recimo:

Code:

typedef struct _raz
{
  float br, im;
} razlomak;


i onda deklarišeš promenljive ne kao "struct razlomak a;", već "razlomak a;".
[ PampeL @ 03.10.2009. 22:40 ] @
Sa prilicno velikim zakasnjenjem, hvala na odgovoru.
Rjesenje mog problema je bilo u:
void unos(struct razlomak x[][2]);

U pitanju je C++, a ne C.

U svakom slucaju puno hvala!