Programiranje u C jeziku
(1 korsinik/a gleda/ju temu) (1) Gost

Programiranje u C jeziku


24.11.2010 | 23:37
Zadatak za pet:

Napisati program koji ucitava matricu A i ispisuje je na ekran, zatim funkcija koja vraca vrijednost determinante matrice A, kao i transponiranu matricu. Pa nova matrica B, program treba da izvrsi sabiranje, oduzimanje, mnozenje matrica A i B.
Ispisati inverzni za B, kao i adjungovanu matricu matrice A.

Moze li neko rijesit...
25.11.2010 | 00:08
Ovo je polu-trivijalno. Daleko najteži dio je računanje determinante, nužan za više stvari. Svođenje na trokutastu matricu je najlakši način izračunavanja (rekurzija je veliki no-no). Ali bolje je da napišeš sam, nego prepisati, jer ima gomila sitnih stvari koji mogu stvoriti problem.



PS. Sorry što se pravim pametan, ali slučajno radim na informatičkom faksu i slučajno predajem programiranje. Da mi student dođe sa tuđim riješenim zadatkom, poslao bi ga u ***.. Na 3. godini FER-a je do prije Bolonje bio predmet koji je imao laboratorijski zadatak vrlo sličan ovome. Po generaciji ga je rješilo 5 ljudi, a ostali su prepisivali. Jer postoji gomila sitnih problema koje samostalni autor zna zašto su riješeni kako su riješeni, baš zato da se otkrije tko prepisuje...
25.11.2010 | 00:11
LaPommes, j***m mu ribu mrtvu, da mu j***m... Kakva je u tvojoj glavi veza između foruma koji se zove "hardver" i školskog zadatka iz C-a koji ti se ne da rješavati.

Nemam ništa protiv da ovdje tražiš pomoć, ali ima forum "programiranje". Prebaci se tamo ako želiš pomoć, ovaj thread će sutra biti obrisan (ako ga admin prije ne prebaci).
25.11.2010 | 00:13
Također ti skrećem pažnju da su pravila ponašanja na Jabučnjaku da se registiraš pravim imenom i prezimenom. Ako to ne učiniš, admin će obrisati tvoj account bez upozorenja prilikom prvog čišćenja.
27.11.2010 | 20:07
hehehe netko je vec bio pitao za rjesenja zadatka za fax pa ga nije dobio. mislim da ti tu nitko to nece napisati cijeli kod, jedino hintove.
27.11.2010 | 20:49
Pa i ne mora cili kod...
Hvala u svakom slucaju.
A sto se tice imena, sto fali La pommes, zovem se Jana, ali jako volim francuski, i po ovom forumu sam eto odlucila staviti za korisnicko ime la pommes, (sto znaci Jabuka)\\zvuci kao neko prezime..
27.11.2010 | 20:53
Stvarno sam pogrisila, prebacicu temu na pravo misto...
27.11.2010 | 22:55
LaPommes je napisao:
Pa i ne mora cili kod...
Hvala u svakom slucaju.
A sto se tice imena, sto fali La pommes, zovem se Jana,


Molim te, ne filozofiraj. Kod registracije ti je lijepo pisalo:

Molimo buduće korisnike da upišu svoje stvarno ime, prezime i email. Nastojimo forum održati ugodnim i korisnim mjestom, a iskustvo je pokazalo da "bezimeni" korisnici prečesto zlorabe svoju anonimnost.

Također, moraš se odlučiti kako se zoveš - tu si napisala da se zoveš Jana, a u registraciji - Jagoda.

Smatraj ovo posljednjim upozorenjem. To su pravila ponašanja na ovom forumu. Ako ti se ne sviđaju, ne moraš se družiti s nama. Ali ako od nas očekuješ pomoć, pridržavaj se naših pravila ponašanja.

Zašto je ovo uopće potrebno uvijek iznova ponavljati? Čemu ta mudrovanja? Da se s bilo kim od nas sretneš negdje uživo i poželiš s nama razgovarati, najnormalnije bi bilo da se predstaviš svojim pravim imenom. Zašto je ovo išta različito?

ali jako volim francuski, i po ovom forumu sam eto odlucila staviti za korisnicko ime la pommes, sto znaci Jabuka\\zvuci kao neko prezime..


Naravno, ne govorimo o nicku, nego o imenu i prezimenu koje unosiš prilikom registracije. Za nick slobodno koristi što želiš.

(Ce n'est pas tres important, tu as tout le liberté poêtique que tu veux, mais - je crois que tu sais dejá - on ecrít "les pommes" ou "la pomme", pas "la pommes". ).
27.11.2010 | 23:01
Naravno !
Je suis totalement d'accord !
27.11.2010 | 23:04
stajpZg je napisao:
(rekurzija je veliki no-no)


A zašto? Rekurzija je definitivno najelegantniji način za rješavanje determinante.
27.11.2010 | 23:18
Da... Palo mi je na pamet da stajpZg možda zna koja je to razina učenja C-a.

LaPommes, koja je to točno razina učenja? Baratate li rekurzijom? Pointerima? Argument by value i by reference?
28.11.2010 | 22:05
Jagoda je moj pseudonim!
28.11.2010 | 22:11
Admini, molim izbrišite taj account.
28.11.2010 | 22:13
uspela sam za ime a za prezime ne dozvoljava da stavim:(
28.11.2010 | 22:17
bar kod za adjungovanu matricuuuu....
28.11.2010 | 22:19
Onda javi ime i prezime privatnom porukom adminima: dpasaric i Riba, ili mailom na Ova e-mail adresa je zaštićena od spam robota, nije vidljiva ako ste isključili JavaScript i Ova e-mail adresa je zaštićena od spam robota, nije vidljiva ako ste isključili JavaScript pa će oni izmijeniti.
28.11.2010 | 22:22
LaPommes je napisao:
bar kod za adjungovanu matricuuuu....


Odgovori na pitanje: koja je to razina učenja C-a? Može li se koristiti rekurzija? Pointeri? Call by reference?
28.11.2010 | 23:44
Ispricavam se...
Moze se koristiti rekurzija, pointeri stogod, samo da program radi!
28.11.2010 | 23:50
stajpZg je napisao:
Ovo je polu-trivijalno. Daleko najteži dio je računanje determinante, nužan za više stvari. Svođenje na trokutastu matricu je najlakši način izračunavanja (rekurzija je veliki no-no). Ali bolje je da napišeš sam, nego prepisati, jer ima gomila sitnih stvari koji mogu stvoriti problem.



PS. Sorry što se pravim pametan, ali slučajno radim na informatičkom faksu i slučajno predajem programiranje. Da mi student dođe sa tuđim riješenim zadatkom, poslao bi ga u ***.. Na 3. godini FER-a je do prije Bolonje bio predmet koji je imao laboratorijski zadatak vrlo sličan ovome. Po generaciji ga je rješilo 5 ljudi, a ostali su prepisivali. Jer postoji gomila sitnih problema koje samostalni autor zna zašto su riješeni kako su riješeni, baš zato da se otkrije tko prepisuje...




Ja ne prepisujem, i nikad nisam prepisivala, samo ovakav slican zahtijevan zadatak te tezine je do nedavno bio za rijesit, a ne isti...
28.11.2010 | 23:55
smayoo je napisao:
LaPommes, j***m mu ribu mrtvu, da mu j***m... Kakva je u tvojoj glavi veza između foruma koji se zove "hardver" i školskog zadatka iz C-a koji ti se ne da rješavati.

Nemam ništa protiv da ovdje tražiš pomoć, ali ima forum "programiranje". Prebaci se tamo ako želiš pomoć, ovaj thread će sutra biti obrisan (ako ga admin prije ne prebaci).


zurila sam i nisam obracala paznju na koju temu sam kliknula,,,, zar je vazno, da se ispraviti, normalno je gresiti...
Zar je bilo potrebe koristiti psovke i prijatelje takvih prostih rijeci....
28.11.2010 | 23:59
Admini, molim izbrišite poruke sa nepotrebnim:huh: ruznim rijecima na ovom forumu!

Hvala na razumijevanju!
29.11.2010 | 01:50
LaPommes je napisao:
Ja ne prepisujem, i nikad nisam prepisivala, samo ovakav slican zahtijevan zadatak te tezine je do nedavno bio za rijesit, a ne isti...


Nisam shvatio što ovo znači. Ali dobro, nema veze.

zurila sam i nisam obracala paznju na koju temu sam kliknula,,,, zar je vazno, da se ispraviti, normalno je gresiti...
Zar je bilo potrebe koristiti psovke i i prijatelje takvih prostih rijeci....


Molim te, ne dociraj. Griješiti je normalno (isprika je na mjestu), ispraviti se može. Ispraviti je morao netko drugi, tko inače nema baš vremena na lopate. Ti si žurila postaviti pitanje, a, gle, još nisi dobila odgovor... Možda bi prije dobila pomoć da si poštovala pravila društva u koje si sama odlučila doći po nju.

Žao mi što su te moje "psovke" toliko pogodile. Admin će ih pobrisati ako smatra potrebnim (iako ih ja, kao moderator, ne bi ni napisao da sam ih smatrao neprimjerenim). Osim što nisu u stvari niti napisane (zvjezdice), nisu niti maliciozne, niti na ikog usmjerene, niti (barem sam ja tako mislio) uvredljive.

Što se rješenja tiče, najprije moraš znati matematičku podlogu. Nekako imam dojam da je ne znaš (jer da je znaš, vidjela bi da je zadatak zapravo lagan). Siguran sam da imaš literaturu gdje to sve piše, ali u žurbi nisi to proučila. Pa, da te poštedim traženja, pogledaj ovamo:



na stranici 13, poglavlje 1.6 "Primjene determinante", pa "Metoda adjunkte" odmah ispod toga.

Kao što si i sama zaključila, cijeli zadatak svodi se na izračun adjungirane matrice. Jednom kad nju imaš, sve ostalo je kikiriki.

Ako je dozvoljena rekurzija, onda je problem, kako reče StajpZG "polutrivijalan".

Prije svega, jasno ti je da se cijela ova priča može raditi samo s kvadratnim matricama (ako nije, prouči gornju literaturu). Da pojednostaviš priču, uz samu matricu, kao argument funkcijama prosljeđuj i njene dimenzije (obje su iste, dakle proslijedi samo jednu).

Trebaš funkciju koja vraća adjungiranu matricu, nazovimo je adjung(a,m) - a je matrica, m je dimenzija, dakle matrica A(m x m) - i drugu koja računa determinantu matrice koju dobije, nazovimo je determ(a,m).

Funkcija determ(a,m) treba biti napisana rekurzivno. Ako je dimenzija m=2, izračunaš determinantu jednostavnim izrazom a[1,1]*a[2,2]-a[1,2]*a[2,1] i vratiš rezultat.

Ako je m>2, determinantu računaš razvojem po prvom retku. Inicijaliziraš sumu na 0 i otvoriš for petlju (neka bude i) od 1 do m. U svakom prolazu najprije odrediš matricu kofaktora (nazovimo je b).

to su ti još dvije for petlje, jedna u drugoj, vanjska za retke (neka bude j), od 2 do m, unutarnja za stupce (neka bude k) od 1 do m. Prije nego uđeš u njih, inicijaliziraš si dva indeksa za kreiranje matrice kofaktora, redak=1 i stupac=1. U petlji retka je samo petlja stupca i nakon nje redak=redak++. U petlji stupca provjeriš da li je tekući stupac jednak stupcu kofaktora (tj. da li je k=i). Ako jest, ne radiš ništa, samo ideš u idući krug petlje. Ako nije, odrediš b[redak,stupac]=a[j,k] i povećaš stupac=stupac++

Kad imaš određenu matricu kofaktora za trenutni član ulazne matrice, pribrajaš sumi trenutni pribrojnik

suma=suma+(-2*((1+i)%2)+1)*a[1,i]*determ(b,m-1)

to ti je, dakle, rekurzivni poziv

Kad završi "i" (najvanjskija for petlja) suma sadrži vrijednost determinante i vraćaš je natrag.

U funkciji adjung(a,m) trebaš za svaki član matrice odrediti kofaktor (determinantu matrice kofaktora) i to onda pomnožiti s jedinicom predznaka i tim članom matrice. Dakle, opet dvije for petlje, vanjska "L" broji retke od 1 do m, unutarnja "i" broji stupce od 1 do m.

Onda unutar unutanje petlje imaš opet dvije petlje za odrediti matricu kofaktora (neka se isto zove b), kao i gore, samo što j ne ide od 2 do m, nego od 1 do m i moraš imati provjeru da li je j=L isto kao i za stupce.

Kad si dobila matricu kofaktora za trenutni član, odrediš trenutni član adjungirane matrice

adja[L,i]=(-2*((L+i)%2)+1)*a[L,i]*determ(b,m-1)

i tako redom dok se ne izvrte petlje L i i do kraja. Na kraju imaš gotovu izračunatu adjungiranu matricu. Ostatak zadatka je kuruza, vjerujem da ti s njim ne treba pomoć.

Izračun matrice kofaktora može se također napisati kao funkcija. Ako se znaš izboriti s prosljeđivanjem pointera na matricu (argument by reference) funkciji i uzimanjem pointera na drugu matricu kao rezultata, nije ti nikakav problem napisati i tu funkciju, da ne moraš dva puta imati isti kôd.
02.12.2010 | 11:36

matematika.fkit.hr/staro/matematika_1/vj...te%20i%20matrice.pdf

na stranici 13, poglavlje 1.6 "Primjene determinante", pa "Metoda adjunkte" odmah ispod toga.

Kao što si i sama zaključila, cijeli zadatak svodi se na izračun adjungirane matrice. Jednom kad nju imaš, sve ostalo je kikiriki.


VELIKO TI HVALA!!!!!
02.12.2010 | 11:43


(Ce n'est pas tres important, tu as tout le liberté poêtique que tu veux, mais - je crois que tu sais dejá - on ecrít "les pommes" ou "la pomme", pas "la pommes". ).


Namerno sam napisala LaPommes, znajuci da je plural, no La u ovom slucaju ne predstavlja clan nego deo "prezimena"... umjetnicki
02.12.2010 | 13:22
Comment j'ai dis - liberté pôetique.
Nema na čemu. Navrati još koji put.
02.12.2010 | 18:37
Hvala svima na jednom od najzabavnijih threadova svih vremena.

Usput bih zamolio dvije stvari. Da li netko može u jednoj rečenici opisati što je to adjungirana matrica i čemu to služi. Googlao sam okolo i nisam baš našao zadovoljavajući odgovor. Mislim, ima na Wikipediji nešto što bi bilo objašnjenje (ili ovo), ali tek to je prilično mistično za mene.

Ono što me vrlo nedavno mučilo je rotacija matrice. I na to sam potrošio par sati na internetu pa sam odustao i napisao algoritam iz glave onako kako je ispalo kad sam te matrice crtao po papiru pa ručno rotirao.

Kao kazaljke na satu za 3x3:
| 1 2 3 | -> | 7 4 1 |
| 4 5 6 | -> | 8 5 2 |
| 7 8 9 | -> | 9 6 3 |

Suprotno:

| 1 2 3 | -> | 3 6 9 |
| 4 5 6 | -> | 2 5 8 |
| 7 8 9 | -> | 1 4 7 |

Ima li neki algoritam za ovako nešto? Ja sam to sam složio odokativnom metodom za matrice bilo koje veličine i teoretski to radi, ali me zanima da li se na faxevima uči i tako nešto i posebno me zanima da li postoji formula za matrice koje nemaju jedak broj redova i stupaca.

Igor

PS, za one koji slučajno ne znaju, novi album Mylène Farmer izlazi za 5 dana.
02.12.2010 | 18:53
Koliko se sjećam, adjungirana matrica je ona koja nastane kada početnoj matrici eliminiraš i-ti redak i j-ti stupac.

Ovo glede rotiranja ne-kvadratnih matrica, mislim da je to malo besmisleno, no ako ustrajemo u tome, onda bi trebalo ili dinamički alocirat i dealocirat memoriju za nove/stare retke/stupce
02.12.2010 | 20:17
Da li netko može u jednoj rečenici opisati što je to adjungirana matrica i čemu to služi.

Smayoo je u jednoj od prethodnih poruka pustio link na PDF koji u Definiciji 1.6.1 odgovara na ovo pitanje, u jednoj rečenici. Primjer upotrebe daje u drugoj rečenici, koja prethodi definiciji.

Ima li neki algoritam za ovako nešto?

Ako je prihvatljivo rješenje s prepisivanjem početne matrice u novu, zarotiranu, algoritam (u ovom slučaju za kvadratnu, NxN, ali prilagodljiv je i za druge) stane u jedan red:

for(i=(N-1);i>=0;i--) for(j=0;j<N;j++) zarotirana[j,(N-1)-i]=pocetna[i,j];

Za što ti je to trebalo? Pokušavam se sjetiti primjene, ali jedino što mi trenutno pada na pamet je pojednostavljenje bilo kojeg algoritma za "simetrične" logičke igre (od križ-kružića nadalje) kod kojih se može testirati 4x manje rješenja ako se početni potez "zarotira" u jednu od 4 moguće početne pozicije. Naravno, u nastavku se mora i svaki sljedeći potez "transformirati" na isti način. A nakon toga i output u suprotnom smjeru da odgovara onome što igrač vidi na ekranu.
02.12.2010 | 22:40
john_st je napisao:
Koliko se sjećam, adjungirana matrica je ona koja nastane kada početnoj matrici eliminiraš i-ti redak i j-ti stupac.


Krivo se sjećaš To je matrica kofaktora.

Adjungirana matrica je kad za svaki član početne matrice na njegovu poziciju staviš vrijednost jednaku determinanti matrice kofaktora pomnoženu s (-1)^(i+j).
02.12.2010 | 23:48
for(i=(N-1);i>=0;i--) for(j=0;j<N;j++) zarotirana[j,(N-1)-i]=pocetna[i,j];


Izgleda da ovo radi i to ona couner clockwise verzija. OK, za bacit matricu upside-down onda ovo treba ponoviti dvaput i za clockwise verziju treba ponoviti triput. Na stranu to da vjerojatno postoje algoritmi i za rotaciju u jednom koraku, ali pustimo sad to.
algoritma za "simetrične" logičke igre (od križ-kružića nadalje) kod kojih se može testirati 4x manje rješenja ako se početni potez "zarotira" u jednu od 4 moguće početne pozicije.


Ovo je too advanced za mene. U pitanju je igra, ali nemam neki AI koji planira unaprijed ili bilo što takvoga. Ovako nešto ti treba i kad pretvaraš C matricu u matematičku matricu zato što su izgleda ove matrice drukčije indexirane i drukčije orjentirane.

| 1 2 3 |
| 4 5 6 |
| 7 8 9 |

Ok, jedinica je element (0,0) ili element (1,1)? Isto tako, dvojka je element (0,1) ili element (1,2). Kad u C-u definiraš nešto poput ovog što očekuješ na poziciji matrix[0][1]? Dvojku ili četvorku?
#define  N  3

static int   matrix[N][N] = {
{ 1, 4, 7 },
{ 2, 5, 8 },
{ 3, 6, 9 },
};


A baci pogled na ovo:


Ove matrice su živi vrag.

P.S. Zapravo sam gore skroz fulao s ovim indexima. Mislio sam zapravo na koordinate x,y kod crtanja pravaca, kvadrata, kružnica i slično. Tu zapravo imamo obrnutu orjentaciju. Tu je lijevi index horizontala, a desni index vertikala. Pardon. Matrice su izgleda stvarno vrag, bar za mene.

Malo ću napraviti neki test program da sve ovo provjerim.
Moderatori: Bertone

Vikalica™

Zadnja poruka: pred 4 sati
  • cariblanco: Koncert na hipodromu, je neponovljiv po mnogim stvarima...dok sam živ neće ga nitko prestići po mnogim detaljima....ma što god mislili o Marku
  • smayoo: RIP Renato Baretić :(
  • dpasaric: Cijene su ti iste kao u Švicarskoj, kada to prihvatiš, sve bude jednostavnije! :)
  • ping: @drlovric Geneva?
  • ping: A
  • drlovric: Jucer sam stigao a vec sam blago sokiran hrvatskim cijenama. Neke stvari vrijedjaju inteligenciju, ali valjda se brzo naviknem :)
  • smayoo: O, brate, kakav pacijent.. :)
  • dpasaric: Joj on je inače lud tip, ali ovo je skroz fora! :)
  • drlovric: Kakva bolest od videa :) [link]
  • dpasaric: Novi mega-članak na naslovnici! Nije za svakoga, ali za one koji to vole bit će poslastica! :)
  • zoranowsky: Također!
  • vicko: Pridružujem se čestitkama!
  • smayoo: Čestitam svima Dan antifašističke borbe!
  • roPeD: Pokrenuo temu u Softver forumu
  • smayoo: Piši u forum i probaj biti jasniji
  • roPeD: Lijepo molim
  • roPeD: Jel bi netko znao prebaciti onaj nas stari Mini Rijecnik da ga mozemo koristiti sa novim operativnim sustavima i M chipovima
  • roPeD: Pozdrav svima
  • drlovric: Zasto instalirate bete na aktivne uredjaje koje koristite svaki dan :/ Mozda je bolje da ti je bankarstvo prestalo raditi, nego da radi nesto sto ne znas :)
  • ZeljkoB: iOS18 dev beta kad je izasao nije polomio nista, ali 17ica je ubila ZABA app...
  • dpasaric: Meni to zvuči kao logična prva stvar koja će se polomiti.
  • ZeljkoB: Je li tko probao iOS26, a da mu ZABA app i dalje radi OK?
  • hal9000: Sretan rođendan i dobrodošao u klub!
  • drpongrac23: Hvala svima!
  • ping: Sretan rođendan
  • dpasaric: Sretan ti! :)
  • zoranowsky: Sretan ročkas!
  • Yonkis: Sretno ti rođendanovo!
  • smayoo: Sretan ti rođendan! :)
  • drpongrac23: Danas sam ušao u 5-u DEKADU ŽIVOTA!!! Živjeli svi!!!
  • hal9000: [link]
  • Riba: Odnio vrag prisu!
  • hal9000: Za 30-ak godina većina nas ni neće više biti živo pa koga briga za responsive site! :D
  • Borisone: Ma nije to, nego se sada početna stranica učita u tren oka. Treba bar 3-4 sekunde da bi bilo moderno.
  • Riba: Uostalom, nije Jabucnjak neresponsivan nego je vama ekran premalen! :-D
  • dpasaric: I nisi boomer, ti si gen X! :)
  • dpasaric: Zašto bi itko išao na ovaj tip weba s mobitela? :)
  • Riba: Hoce, vec je u pripremi godinama ali je implementacija malo zapela...plus sto ne pomaze sto ja boomer nikada ne idem na jabucnjak sa mobilnog uredjaja. :)
  • CoffeePod: Jabucnjak*
  • CoffeePod: Hoce li Jabuvnjak ikad dobit reponsive sajt?
  • cariblanco: Danas smo u Osijeku, možda shebali turističku sezonu :D
  • dpasaric: Slijedi uskoro osvrt na naslovnici...
  • Air: ...a Applevom slučaju iako te fore drugi telefoni imaju već godinama, ali kad to Apple napravi mi bi se trebali diviti tome kao toploj vodi.
  • Air: Meni Keynote izgleda kao kad Trum hvali samo sebe i svoje odluke kao ono baš najbolje, iako ga je cijeli Svijet popljuvao...
  • drlovric: Na Mac, Spotlight je odlican, kao i boja foldera (konacno) :)
  • drlovric: iPad je odlicno profitirao. Ako sve ovo ne zakljucaju za najnovije modele only :)
  • Riba: Keynote mi je kao neka epizoda Teletubbiesa.
  • Riba: Gledam taj WWDC i razmisljam kako su teme o umiranju mozda privlacnije. :-D
  • dpasaric: Idemo mi na ljepše teme, WWDC je za sat vremena! :)
  • dpasaric: Sve pet, ali nije li zanimljiva statsitika da je od zadnjih 30-ak (toliko pratimo na jednoj internoj grupi objave u medijima) sportaša, umjetnika i ostalih poznaith osoba koje su iznenada umrle, uzorak cijepljenih 100%. A znamo da je kod nas situacija bila cca 50:50, znači nešto lomi statistiku. Evo, samo to primjećujem.

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

Gjuroo, Maxxy, Riba, robee, Anonimci (532)

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Anketa

Koji Mac koristite?

Page Speed 1.03 Seconds

Provided by iJoomla SEO