Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
Manny Callavera Forumaš(ica)


Pridružen/a: 17. 02. 2004. (12:40:20) Postovi: (2D)16
Spol: 
Lokacija: Zgb
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 14:07 sub, 17. 4. 2004 Naslov: Re: Rekurzija determinante |
|
|
[quote="mandark"]zadatak by VŠego[/quote]
Kao i rjesenje... :roll:
[b]Generalno:[/b] Ja dajem rjesenja svojih rokova. Mozete ih dobiti u onoj fotokopiraoni gdje sam ih ostavio skupa s rokovima, kao i skinuti [url=http://web.math.hr/nastava/uur/stari_rokovi.php]s weba[/url]. 8)
Sto se bas tog zadatka tice, malo mi se "omaklo"... :( Mislio sam da ce biti rel. lako, a (iznimno) nisam slozio rjesenja prije ispita, pa sam tek naknadno skuzio da je tesko... :(
Upravo skuzih da webmaster nije uploadao taj rok, iako sam javio gresku. :( Evo copy-paste iz PDFa koji imam doma...
[code:1]funkcija det(int m[99, 99], int n)
int pomocna[99, 99]
ako je n = 1 vrati m[1, 1]
suma ← 0
// predznak (tj. (-1)^i)
p1 ← 1
// razvijamo po prvom stupcu
za i = 1,..., n radi
// slažemo pomocnu matricu – onu koja nastaje od m
// uklanjanjem i-tog retka
za k = 1,..., n – 1 radi
za j = 1,..., i – 1 radi
pomocna[j, k] ← m[j, k + 1]
za j = i,..., n - 1 radi
pomocna[j, k] ← m[j + 1, k + 1]
suma ← suma + p1 * m[i, 1] * det(pomocna, n – 1)
p1 ← p1 * (-1)
vrati suma[/code:1]
Ne garantiram da nema gresaka 8) ali vjerojatno nista jako bitno... :)
:wave:
mandark (napisa): | zadatak by VŠego |
Kao i rjesenje...
Generalno: Ja dajem rjesenja svojih rokova. Mozete ih dobiti u onoj fotokopiraoni gdje sam ih ostavio skupa s rokovima, kao i skinuti s weba.
Sto se bas tog zadatka tice, malo mi se "omaklo"... Mislio sam da ce biti rel. lako, a (iznimno) nisam slozio rjesenja prije ispita, pa sam tek naknadno skuzio da je tesko...
Upravo skuzih da webmaster nije uploadao taj rok, iako sam javio gresku. Evo copy-paste iz PDFa koji imam doma...
Kod: | funkcija det(int m[99, 99], int n)
int pomocna[99, 99]
ako je n = 1 vrati m[1, 1]
suma ← 0
// predznak (tj. (-1)^i)
p1 ← 1
// razvijamo po prvom stupcu
za i = 1,..., n radi
// slažemo pomocnu matricu – onu koja nastaje od m
// uklanjanjem i-tog retka
za k = 1,..., n – 1 radi
za j = 1,..., i – 1 radi
pomocna[j, k] ← m[j, k + 1]
za j = i,..., n - 1 radi
pomocna[j, k] ← m[j + 1, k + 1]
suma ← suma + p1 * m[i, 1] * det(pomocna, n – 1)
p1 ← p1 * (-1)
vrati suma |
Ne garantiram da nema gresaka ali vjerojatno nista jako bitno...
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju. 
|
|
[Vrh] |
|
Manny Callavera Forumaš(ica)


Pridružen/a: 17. 02. 2004. (12:40:20) Postovi: (2D)16
Spol: 
Lokacija: Zgb
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
Manny Callavera Forumaš(ica)


Pridružen/a: 17. 02. 2004. (12:40:20) Postovi: (2D)16
Spol: 
Lokacija: Zgb
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
Manny Callavera Forumaš(ica)


Pridružen/a: 17. 02. 2004. (12:40:20) Postovi: (2D)16
Spol: 
Lokacija: Zgb
|
|
[Vrh] |
|
GauSs_ Moderator


Pridružen/a: 28. 01. 2004. (21:01:17) Postovi: (53C)16
Spol: 
Lokacija: 231
|
Postano: 13:45 pon, 19. 4. 2004 Naslov: determinanta |
|
|
pod pretpostavkom da je sego pisajuci pseudo kod mislio na:
[code:1]
funkcija det(int m[99, 99], int n){
int pomocna[99, 99]
ako je n = 1 vrati m[1, 1]
suma ← 0
// predznak (tj. (-1)^i)
p1 ← 1
// razvijamo po prvom stupcu
za i = 1,..., n radi {
// slažemo pomocnu matricu – onu koja nastaje od m
// uklanjanjem i-tog retka
za k = 1,..., n – 1 radi {
za j = 1,..., i – 1 radi {
pomocna[j, k] ← m[j, k + 1] }
za j = i,..., n - 1 radi {
pomocna[j, k] ← m[j + 1, k + 1] }
suma ← suma + p1 * m[i, 1] * det(pomocna, n – 1)
p1 ← p1 * (-1)
}
}
vrati suma
}
[/code:1]
zadatak vam nije ispravan, tj. segi!
probelm je u ovom dijelu:
[code:1]
suma ← suma + p1 * m[i, 1] * det(pomocna, n – 1)
p1 ← p1 * (-1)
[/code:1]
koji bi se trebao nalaziti izvan petlje:
[code:1]
za k = 1,..., n – 1 radi
[/code:1]
i pravilno bi glasio:
[code:1]
funkcija det(int m[99, 99], int n){
int pomocna[99, 99]
ako je n = 1 vrati m[1, 1]
suma ← 0
// predznak (tj. (-1)^i)
p1 ← 1
// razvijamo po prvom stupcu
za i = 1,..., n radi {
// slažemo pomocnu matricu – onu koja nastaje od m
// uklanjanjem i-tog retka
za k = 1,..., n – 1 radi {
za j = 1,..., i – 1 radi {
pomocna[j, k] ← m[j, k + 1] }
za j = i,..., n - 1 radi {
pomocna[j, k] ← m[j + 1, k + 1] }
}
suma ← suma + p1 * m[i, 1] * det(pomocna, n – 1)
p1 ← p1 * (-1)
}
vrati suma
}
[/code:1]
ili ako zelite npr. u c-u:
[code:1]
double* determinanta( double **a, int red_matrice){
int i, j, k, predznak;
double *suma, **pomocna;
suma=(double *) malloc(sizeof( double));
if(red_matrice==1) return *a;
*suma=0;
predznak=1;
pomocna=(double **) malloc(red_matrice*(sizeof(void *)));
if(pomocna==NULL){
puts(":>>> Pogreska pri alociranju memorije");
return NULL;
}
for(i=0;i<red_matrice;i++){
pomocna[i]=(double *) malloc(red_matrice*(sizeof(double )));
if(pomocna[i]==NULL){
puts(":>>> Pogreska pri alociranju memorije");
return NULL;
}
}
for(i=0;i<red_matrice;i++){
for(k=0;k<red_matrice-1;k++){
for(j=0;j<i;j++) pomocna[j][k]=a[j][k+1];
for(j=i;j<red_matrice-1;j++) pomocna[j][k]=a[j+1][k+1];
}
(*suma)+=predznak*a[i][0]*(*(determinanta(pomocna, red_matrice-1)));
predznak*=-1;
}
for(i=0;i<red_matrice;i++) free(pomocna[i]);
free(pomocna);
return suma;
}
[/code:1]
:D
pod pretpostavkom da je sego pisajuci pseudo kod mislio na:
Kod: |
funkcija det(int m[99, 99], int n){
int pomocna[99, 99]
ako je n = 1 vrati m[1, 1]
suma ← 0
// predznak (tj. (-1)^i)
p1 ← 1
// razvijamo po prvom stupcu
za i = 1,..., n radi {
// slažemo pomocnu matricu – onu koja nastaje od m
// uklanjanjem i-tog retka
za k = 1,..., n – 1 radi {
za j = 1,..., i – 1 radi {
pomocna[j, k] ← m[j, k + 1] }
za j = i,..., n - 1 radi {
pomocna[j, k] ← m[j + 1, k + 1] }
suma ← suma + p1 * m[i, 1] * det(pomocna, n – 1)
p1 ← p1 * (-1)
}
}
vrati suma
}
|
zadatak vam nije ispravan, tj. segi!
probelm je u ovom dijelu:
Kod: |
suma ← suma + p1 * m[i, 1] * det(pomocna, n – 1)
p1 ← p1 * (-1)
|
koji bi se trebao nalaziti izvan petlje:
Kod: |
za k = 1,..., n – 1 radi
|
i pravilno bi glasio:
Kod: |
funkcija det(int m[99, 99], int n){
int pomocna[99, 99]
ako je n = 1 vrati m[1, 1]
suma ← 0
// predznak (tj. (-1)^i)
p1 ← 1
// razvijamo po prvom stupcu
za i = 1,..., n radi {
// slažemo pomocnu matricu – onu koja nastaje od m
// uklanjanjem i-tog retka
za k = 1,..., n – 1 radi {
za j = 1,..., i – 1 radi {
pomocna[j, k] ← m[j, k + 1] }
za j = i,..., n - 1 radi {
pomocna[j, k] ← m[j + 1, k + 1] }
}
suma ← suma + p1 * m[i, 1] * det(pomocna, n – 1)
p1 ← p1 * (-1)
}
vrati suma
}
|
ili ako zelite npr. u c-u:
Kod: |
double* determinanta( double **a, int red_matrice){
int i, j, k, predznak;
double *suma, **pomocna;
suma=(double *) malloc(sizeof( double));
if(red_matrice==1) return *a;
*suma=0;
predznak=1;
pomocna=(double **) malloc(red_matrice*(sizeof(void *)));
if(pomocna==NULL){
puts(":>>> Pogreska pri alociranju memorije");
return NULL;
}
for(i=0;i<red_matrice;i++){
pomocna[i]=(double *) malloc(red_matrice*(sizeof(double )));
if(pomocna[i]==NULL){
puts(":>>> Pogreska pri alociranju memorije");
return NULL;
}
}
for(i=0;i<red_matrice;i++){
for(k=0;k<red_matrice-1;k++){
for(j=0;j<i;j++) pomocna[j][k]=a[j][k+1];
for(j=i;j<red_matrice-1;j++) pomocna[j][k]=a[j+1][k+1];
}
(*suma)+=predznak*a[i][0]*(*(determinanta(pomocna, red_matrice-1)));
predznak*=-1;
}
for(i=0;i<red_matrice;i++) free(pomocna[i]);
free(pomocna);
return suma;
}
|
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
GauSs_ Moderator


Pridružen/a: 28. 01. 2004. (21:01:17) Postovi: (53C)16
Spol: 
Lokacija: 231
|
|
[Vrh] |
|
|