Mnozenje matrice

Mnozenje matrice

offline
  • Pridružio: 31 Dec 2011
  • Poruke: 109
  • Gde živiš: Novi Pazar

Imam problem jer ne znam kako u C-jeziku da mnozim matricu

Ovo sam pokusao sam ali mnozenje mi nije dobro
[Link mogu videti samo ulogovani korisnici]

A tekst zadatka je sledeci

[Link mogu videti samo ulogovani korisnici]

Matrica mora da bude dinamicki alocirana....



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 10 Mar 2009
  • Poruke: 101
  • Gde živiš: Podgorica

Kada jednom alociras memoriju za matricu, nema potrebe da ponovo alociras kao sto si to uradio u funkciji mnozenje. A druga stvar ti mnozis a[0][0] * a[0][0] i smjestas rezultat u promenljivu 'rez' zatim mnozis a[0][1] * a[0][1] i gazis ono sto se nalazi u rez i stavljas ovu novu vrijednost. I treca stvar, makni free(a) iz funkcije mnozenje, koliko vidim vec si postavio to u main funkciji.

Sad ne znam kako zelis da pomnozis matricu, da li sva polja i sve to stavis u jednu promenljivu, ili treba da napravis novu matricu velicine n*n koja ce sadrzati vrijednost A*A, ako je ovo prvo stavi rez += a[i][j] a ako je drugo, napravi drugu matricu b, alociraj memoriju za nju, i onda napises ovo b[i][j] = a[i][j] * a[i][j]. I na kraju te funkcije stavis return b. Ali sada posto funkcija vrace matricu, onda tip funkcije mora biti int**.

Jedino nisam siguran za malloc funkciju, da li se ovako alocira memorija za matricu, posto ja radim u C++, tako da koristim operator new, pa moram da dodam for petlju koja ce da alocira memoriju za svaki red u matrici.



offline
  • Pridružio: 31 Dec 2011
  • Poruke: 109
  • Gde živiš: Novi Pazar

Ispravio sam ove pogreske, ali ne mogu da unesem sve elemente matrice jer verovatno sam pogresno alocirao memoriju za matricu. Na primer imam matricu 3x3, i treba da unesem 9 elemenata te matrice. Krenem da unosim elemente i dodjem do sedmog elementa niza kojeg treba da unesem, ali ne mogu jer izlazi iz programa. Mozda je i do kompajlera ja koristim C free 4.0, a u zbirci je ovako alocirana memorija.. U C++ je to jednostavnije sa new i delete....
[Link mogu videti samo ulogovani korisnici]

offline
  • Pridružio: 10 Mar 2009
  • Poruke: 101
  • Gde živiš: Podgorica

Pogresno alociras memoriju. Kad napises:
int *a; a = (int*) malloc( n );
Ti pravis niz 'a' od n elemenata. Sad ovo 'a' je pokazivac na niz elemenata. Matrica (int**) je niz nizova:
int** m; m = (int**) malloc( n ); for( i=0; i<n; i++ )     m[i] = (int*) malloc( n );
Ovo 'm' je pokazivac na niz pokazivaca nizova ( 0.o ). Sto znaci da ti prvo moras da napravis niz pokazivaca a onda svakom elementu toga niza ( element je pokazivac na niz ) dodijelis niz. Nadam se da si me skapirao. Very Happy
(To ti je sve stvar pokazivaca, kad budes njih ucio sve ce ti ovo biti mnogo jasnije)

E sad jedino ne znam da li bas mora da se pise ovako
 a = (int*) malloc( sizeof(int) * n );
Posto kod mene radi bez ovog sizeof Very Happy

Funkcija 'mnozenje' je tipa 'int**' sto znaci da moras da vratis matricu (niz nizova). A ti vracas b[i][j], to jeste b[n-1][n-1] sto je 'int'. Ovo ostalo bi trebalo da bude u redu. Very Happy

offline
  • Pridružio: 19 Maj 2011
  • Poruke: 297

clzola ::
E sad jedino ne znam da li bas mora da se pise ovako
 a = (int*) malloc( sizeof(int) * n );
Posto kod mene radi bez ovog sizeof Very Happy


Mora jer se trazi velicina u bajtima!

Ko je trenutno na forumu
 

Ukupno su 1251 korisnika na forumu :: 99 registrovanih, 7 sakrivenih i 1145 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 15694 - dana 01 Feb 2026 12:23

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 015, 33 bren, advokat84, aleph_one, ALEXV, alternator, amaterSRB, Anunakiii, Armadillo, AS, Avalon015, batana, Bo96, Bobrock1, Bojke549, bokicacar, brkan1, Bubili, Bubimir, Cicumile, coaaco, cojapop, Comyymoc, CrazyDiablo, croato, dekan.m, Denaya, DENIRO, Dimitrije Paunovic, Dioniss, Djokkinen, djordje92sm, DJUNTA, Djuza, DLazić, Dorijan Grej, draganca, Dukelander, Dzoni2412, Enderus, Feller, goran.vvv, GrobarPovratak, havoc995, Igritelj, In_hero, istina, j-22orao, Jester, kaisarevic1, Kalu128338, Korle, kybonacci, Lester Freamon, Levi, Malahit, Marko Marković, Mi lao shu, Miki01, mikrimaus, mir, Mitogna, MK10, mnn2, nebidrag, nebkv, nebojsag, Nemanja.M, Petar25, Pilence, Podgoritza, Prečanin30, repac, robertino, Romuluss, ruma, samoulogovankorisnik, sasics, sekretar, Slobodan Filipović, Srki98, Stanislav1970, t84dar, tritonus, Troja, Tumansky, Tunguska55, Utd4ce, veljko82, Viceroy, Vojkan Petrovic, vojnik švejk, vrag81, Warrior, XBMC, yrraf, Zastava, zeka013, zexon