Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
ON Forumaš(ica)
Pridružen/a: 09. 02. 2010. (19:31:10) Postovi: (D)16
Spol:
|
Postano: 23:34 sub, 29. 1. 2011 Naslov: |
|
|
da da , nije neki problem uvrstiti sve u formulu makar imaš razlomke i ostalo ako imaš sređen hornerov argoritam, ali je bar meni problem sređivanje dobivenog algoritma, pošto toliko nisam bar još radio s matematičke strane, gledao sam po internetu i nigdje pa me čisto zanima gdje mogu naučiti sređivati te algoritme budući da mi oni iz skripte neće puno pomoći kad dobijem neku kobasicu od hornerovog algoritma u popravnom, i čini mi se svake godine sve teži i teži zadatci i na kolokvijima i na popravnima, mislim nismo svi programirali u srednjoj i mislim da treba puno više od tri mjeseca da pohvataš sve ovo uzevši u obzir da nam Programiranje 1 nije jedini kolegij u semestru!
da da , nije neki problem uvrstiti sve u formulu makar imaš razlomke i ostalo ako imaš sređen hornerov argoritam, ali je bar meni problem sređivanje dobivenog algoritma, pošto toliko nisam bar još radio s matematičke strane, gledao sam po internetu i nigdje pa me čisto zanima gdje mogu naučiti sređivati te algoritme budući da mi oni iz skripte neće puno pomoći kad dobijem neku kobasicu od hornerovog algoritma u popravnom, i čini mi se svake godine sve teži i teži zadatci i na kolokvijima i na popravnima, mislim nismo svi programirali u srednjoj i mislim da treba puno više od tri mjeseca da pohvataš sve ovo uzevši u obzir da nam Programiranje 1 nije jedini kolegij u semestru!
|
|
[Vrh] |
|
matea007 Forumaš(ica)
Pridružen/a: 16. 01. 2011. (14:01:32) Postovi: (9)16
|
|
[Vrh] |
|
frutabella Forumaš(ica)
Pridružen/a: 09. 10. 2010. (16:35:36) Postovi: (24E)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
Postano: 0:44 čet, 5. 1. 2012 Naslov: |
|
|
"Proslogodisnji zadatak" bas i nije jednoznacan opis, ali nekako sumnjam da je [tt]p=p*x*x[color=red]^[/color]i;[/tt] tocno u bilo kojem zadatku s Hornerom kojeg smo ikad zadali.
Inace, ako je s kolokvija, rjesenja su na webu. Izvedes oba programa (svoj i sluzbeni) na par primjera, pa vidis je l' vracaju iste rezultate (ovo tvoje gotovo sigurno ne vraca isto sto i sluzbeno rjesenje).
"Proslogodisnji zadatak" bas i nije jednoznacan opis, ali nekako sumnjam da je p=p*x*x^i; tocno u bilo kojem zadatku s Hornerom kojeg smo ikad zadali.
Inace, ako je s kolokvija, rjesenja su na webu. Izvedes oba programa (svoj i sluzbeni) na par primjera, pa vidis je l' vracaju iste rezultate (ovo tvoje gotovo sigurno ne vraca isto sto i sluzbeno rjesenje).
_________________ 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] |
|
štrumfeta Forumaš(ica)
Pridružen/a: 02. 11. 2011. (19:36:55) Postovi: (36)16
|
Postano: 12:16 uto, 10. 1. 2012 Naslov: |
|
|
[code:1]#include <stdio.h>
double horner2(double element,double q[],double u,int n) {
int j;
double p = 0.0;
for (j = n-1; j >= 0; j--)p=p*u +(element/q[n-j-1]);
return p;
}
double horner1(double p[],double q[],double u,int n) {
int i;
double suma=0.0, upot = u * u;
for (i = 1; i <= n; ++i) {
suma=suma+upot*horner2(p[n-i],q,u,n);
upot=upot*u;
}
return suma;
}
int main(void) {
int n,i;
double p[12],q[12],u;
printf("unesite n= ");
scanf("%d",&n);
printf("unesite koeficijente: \n");
for(i=0;i<n;i++){ printf("p[%d]= ",i);
scanf("%lf",&p[i]);
}
for(i=0;i<n;i++){ printf("q[%d]= ",i);
scanf("%lf",&q[i]);
}
printf("unesite u= ");
scanf("%lf",&u);
printf("rezultat je %lf\n",horner1(p,q,u,n));
return 0;
}[/code:1]
jel treba pazit da drugi niz ima sve elemente 0 pa djelimo s nula?
i još jedno pitanj..dal možemo koristit npr."unesite prirodan broj n >0" petlju if(n<=0)exit(1) umjesto unsigned int n ili možemo stavit i unsigned int n pa stavimo samo if(n==0)exit(1)??malo sam spetljala sad.ugl jel možemo koristit exit(1)?fala..
Kod: | #include <stdio.h>
double horner2(double element,double q[],double u,int n) {
int j;
double p = 0.0;
for (j = n-1; j >= 0; j--)p=p*u +(element/q[n-j-1]);
return p;
}
double horner1(double p[],double q[],double u,int n) {
int i;
double suma=0.0, upot = u * u;
for (i = 1; i <= n; ++i) {
suma=suma+upot*horner2(p[n-i],q,u,n);
upot=upot*u;
}
return suma;
}
int main(void) {
int n,i;
double p[12],q[12],u;
printf("unesite n= ");
scanf("%d",&n);
printf("unesite koeficijente: \n");
for(i=0;i<n;i++){ printf("p[%d]= ",i);
scanf("%lf",&p[i]);
}
for(i=0;i<n;i++){ printf("q[%d]= ",i);
scanf("%lf",&q[i]);
}
printf("unesite u= ");
scanf("%lf",&u);
printf("rezultat je %lf\n",horner1(p,q,u,n));
return 0;
} |
jel treba pazit da drugi niz ima sve elemente 0 pa djelimo s nula?
i još jedno pitanj..dal možemo koristit npr."unesite prirodan broj n >0" petlju if(n⇐0)exit(1) umjesto unsigned int n ili možemo stavit i unsigned int n pa stavimo samo if(n==0)exit(1)??malo sam spetljala sad.ugl jel možemo koristit exit(1)?fala..
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
Postano: 13:04 uto, 10. 1. 2012 Naslov: |
|
|
[quote="štrumfeta"]i još jedno pitanj..dal možemo koristit npr."unesite prirodan broj n >0" petlju if(n<=0)exit(1) umjesto unsigned int n ili možemo stavit i unsigned int n pa stavimo samo if(n==0)exit(1)??malo sam spetljala sad.ugl jel možemo koristit exit(1)?fala..[/quote]
"Unesite prirodan broj n > 0" [tex]\equiv[/tex] "korisnik unosi prirodan broj n > 0 i za njega program mora raditi korektno". U praksi trebate provjeravati je li broj stvarno kakav se trazi, no na kolokviju to nije potrebno. Dakle, [tt]int n; scanf("%d", &n);[/tt] je sasvim dovoljno.
Prvi dio posta uopce nisam razumio sto se hoce, pa ne mogu niti odgovoriti.
štrumfeta (napisa): | i još jedno pitanj..dal možemo koristit npr."unesite prirodan broj n >0" petlju if(n⇐0)exit(1) umjesto unsigned int n ili možemo stavit i unsigned int n pa stavimo samo if(n==0)exit(1)??malo sam spetljala sad.ugl jel možemo koristit exit(1)?fala.. |
"Unesite prirodan broj n > 0" [tex]\equiv[/tex] "korisnik unosi prirodan broj n > 0 i za njega program mora raditi korektno". U praksi trebate provjeravati je li broj stvarno kakav se trazi, no na kolokviju to nije potrebno. Dakle, int n; scanf("%d", &n); je sasvim dovoljno.
Prvi dio posta uopce nisam razumio sto se hoce, pa ne mogu niti odgovoriti.
_________________ 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] |
|
štrumfeta Forumaš(ica)
Pridružen/a: 02. 11. 2011. (19:36:55) Postovi: (36)16
|
|
[Vrh] |
|
štrumfeta Forumaš(ica)
Pridružen/a: 02. 11. 2011. (19:36:55) Postovi: (36)16
|
Postano: 19:23 uto, 10. 1. 2012 Naslov: |
|
|
[code:1]#include <stdio.h>
int polinom1(int x, int n)
{
int k, temp=0;
for (k = n; k >= 0; k--){
temp = temp*x+((k % 2) ? -1:1)*(n*n*n+2*n-k);
}
return temp;
}
int main(){
int niz[2011], i, nered, temp, n,kraj;
scanf("%d", &n);
for(i=0; i<n; i++){
scanf("%d", &niz[i]);
}
kraj=n-1;
nered=1;
while(nered){
nered = 0;
for (i = 0; i<kraj; i++)
if (polinom1(niz[i],3) > polinom1(niz[i+1],3)){
nered = 1;
temp = niz[i];
niz[i] = niz[i+1];
niz[i+1] = temp;
}
--kraj;
}
for (i = 0; i < n; i++) printf("%d ",niz[i]);
return 0;
}[/code:1]
3 zadatak ,kolokvij2011!jel mi netko može reć što krivo radim jer mi program ne ispisuje dobro(provjeravala sam sa službenim rješenjem)i molim vas..
Kod: | #include <stdio.h>
int polinom1(int x, int n)
{
int k, temp=0;
for (k = n; k >= 0; k--){
temp = temp*x+((k % 2) ? -1:1)*(n*n*n+2*n-k);
}
return temp;
}
int main(){
int niz[2011], i, nered, temp, n,kraj;
scanf("%d", &n);
for(i=0; i<n; i++){
scanf("%d", &niz[i]);
}
kraj=n-1;
nered=1;
while(nered){
nered = 0;
for (i = 0; i<kraj; i++)
if (polinom1(niz[i],3) > polinom1(niz[i+1],3)){
nered = 1;
temp = niz[i];
niz[i] = niz[i+1];
niz[i+1] = temp;
}
--kraj;
}
for (i = 0; i < n; i++) printf("%d ",niz[i]);
return 0;
} |
3 zadatak ,kolokvij2011!jel mi netko može reć što krivo radim jer mi program ne ispisuje dobro(provjeravala sam sa službenim rješenjem)i molim vas..
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
štrumfeta Forumaš(ica)
Pridružen/a: 02. 11. 2011. (19:36:55) Postovi: (36)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
štrumfeta Forumaš(ica)
Pridružen/a: 02. 11. 2011. (19:36:55) Postovi: (36)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
Postano: 0:57 sri, 11. 1. 2012 Naslov: |
|
|
Ajde u oba programa -- svoj i sluzbeni -- stavi ovaj ispis:
[tt]for (i = 0; i < n; i++) printf("%ld (%ld)\n",niz[i],polinom1(niz[i],3));[/tt]
pa mi javi sto koji ispisuje na ovom racunalu za koje kazes da vraca krivo (tj. da programi ispisuju razlicito). Bas me zanima sto se zbiva i zasto.
Jos ako znas napisati koji je to hardware, bilo bi lijepo, no mogu prezivjeti i bez toga. :)
Ajde u oba programa – svoj i sluzbeni – stavi ovaj ispis:
for (i = 0; i < n; i++) printf("%ld (%ld)\n",niz[i],polinom1(niz[i],3));
pa mi javi sto koji ispisuje na ovom racunalu za koje kazes da vraca krivo (tj. da programi ispisuju razlicito). Bas me zanima sto se zbiva i zasto.
Jos ako znas napisati koji je to hardware, bilo bi lijepo, no mogu prezivjeti i bez toga.
_________________ 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] |
|
štrumfeta Forumaš(ica)
Pridružen/a: 02. 11. 2011. (19:36:55) Postovi: (36)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
Postano: 10:06 sri, 11. 1. 2012 Naslov: |
|
|
Ok, no probs. Ali, jedno malo upozorenje: [b]pazite kad testirate programe da uneseni brojevi imaju smisla![/b]
Onih 988 s kojim testiras je pomalo veliko, pa dobijes [tex]P(988,3) = -28902679279[/tex] sto ne stane u obicni [tt]int[/tt] od 4 bytea. Ovisno o arhitekturi racunala i compileru, moguce je da se drugacije ponasa (standard kaze samo da [tt]int[/tt] mora biti 4 bytea, ne i da mora biti tocno toliko), no ne vjerujem da se tebi tu nesto potrgalo, jer ne vidim bitnu razliku izmedju tvog i sluzbenog rjesenja.
Primijeti da i sluzbeno rjesenje gura -988 na zadnje mjesto, a trebao bi biti prvi (ima najmanju vrijednost polinoma). To je upravo zbog ovewflowa kod racunanja rjesenja.
Uz izmijenjeni ispis, ovo je sluzbeno rjesenje za tvoje brojeve (u zagradi su vrijednosti polinoma po kojima se sortira):
[code:1]$ gcc zad3A.c && echo 10 34 35 32 38 39 21 988 -321 219 34 | ./a.out
219 (-313623954)
39 (-1733634)
38 (-1602579)
35 (-1249362)
34 (-1144339)
34 (-1144339)
32 (-952287)
21 (-264798)
-321 (995489406)
988 (1162091793)[/code:1]
Ovo ti daje isti program kad sve [tt]int[/tt] (osim onog ispred [tt]main[/tt]) zamijenis s [tt]long[/tt] i sredis formate za unos i ispis:
[code:1]$ gcc zad3A.c && echo 10 34 35 32 38 39 21 988 -321 219 34 | ./a.out
988 (-28902679279)
219 (-313623954)
39 (-1733634)
38 (-1602579)
35 (-1249362)
34 (-1144339)
34 (-1144339)
32 (-952287)
21 (-264798)
-321 (995489406)[/code:1]
Identicno se ponasa i tvoj program.
Da rezimiram: ako unosite podatke ciji rezultat nije prikaziv, moze doci do raznih problema. At minimum, diskrepancija s ocekivanim rezultatom (npr. ako ga racunate na ruke ili usporedjujete s bitno drugacije implementiranim sluzbenim rjesenjem).
Ok, no probs. Ali, jedno malo upozorenje: pazite kad testirate programe da uneseni brojevi imaju smisla!
Onih 988 s kojim testiras je pomalo veliko, pa dobijes [tex]P(988,3) = -28902679279[/tex] sto ne stane u obicni int od 4 bytea. Ovisno o arhitekturi racunala i compileru, moguce je da se drugacije ponasa (standard kaze samo da int mora biti 4 bytea, ne i da mora biti tocno toliko), no ne vjerujem da se tebi tu nesto potrgalo, jer ne vidim bitnu razliku izmedju tvog i sluzbenog rjesenja.
Primijeti da i sluzbeno rjesenje gura -988 na zadnje mjesto, a trebao bi biti prvi (ima najmanju vrijednost polinoma). To je upravo zbog ovewflowa kod racunanja rjesenja.
Uz izmijenjeni ispis, ovo je sluzbeno rjesenje za tvoje brojeve (u zagradi su vrijednosti polinoma po kojima se sortira):
Kod: | $ gcc zad3A.c && echo 10 34 35 32 38 39 21 988 -321 219 34 | ./a.out
219 (-313623954)
39 (-1733634)
38 (-1602579)
35 (-1249362)
34 (-1144339)
34 (-1144339)
32 (-952287)
21 (-264798)
-321 (995489406)
988 (1162091793) |
Ovo ti daje isti program kad sve int (osim onog ispred main) zamijenis s long i sredis formate za unos i ispis:
Kod: | $ gcc zad3A.c && echo 10 34 35 32 38 39 21 988 -321 219 34 | ./a.out
988 (-28902679279)
219 (-313623954)
39 (-1733634)
38 (-1602579)
35 (-1249362)
34 (-1144339)
34 (-1144339)
32 (-952287)
21 (-264798)
-321 (995489406) |
Identicno se ponasa i tvoj program.
Da rezimiram: ako unosite podatke ciji rezultat nije prikaziv, moze doci do raznih problema. At minimum, diskrepancija s ocekivanim rezultatom (npr. ako ga racunate na ruke ili usporedjujete s bitno drugacije implementiranim sluzbenim rjesenjem).
_________________ 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] |
|
|