Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
la mer Forumaš(ica)
Pridružen/a: 19. 09. 2012. (17:39:46) Postovi: (F)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
BlameGame Forumaš(ica)
Pridružen/a: 14. 09. 2011. (19:17:53) Postovi: (6C)16
|
Postano: 21:41 sri, 16. 1. 2013 Naslov: |
|
|
Molim pomoc, proslogodisnji kolokvij, 2.zadatak pod b(prva grupa, mada nebitno) u rjesenju u glavnom programu se provjerava da li je p(kojeg dobijemo iz funkcije Horner) veci od res, e sad mene zanima koju vrijednost ima taj res, jer nije inicijaliziran, jel njega dobijemo isto pozivom funkcije ili? ili mi je promaklo gdje on dobija vrijednost?
Molim pomoc, proslogodisnji kolokvij, 2.zadatak pod b(prva grupa, mada nebitno) u rjesenju u glavnom programu se provjerava da li je p(kojeg dobijemo iz funkcije Horner) veci od res, e sad mene zanima koju vrijednost ima taj res, jer nije inicijaliziran, jel njega dobijemo isto pozivom funkcije ili? ili mi je promaklo gdje on dobija vrijednost?
|
|
[Vrh] |
|
El_Loco Forumaš(ica)
Pridružen/a: 26. 05. 2012. (15:25:04) Postovi: (31)16
Spol:
|
Postano: 22:13 sri, 16. 1. 2013 Naslov: |
|
|
[code:1]int first = 1;
...
if( first || p>res ){
res = p;
first = 0;
}[/code:1]
kada program prvi put dođe do ovog if-a, first će biti 1, i neće se provjeravati drugi uvjet. time ćemo res postaviti na prvu vrijednost p koju izračunamo, a first će postati 0. svaki idući put kada dođemo do if-a, first je 0, pa se provjerava drugi uvjet.
Kod: | int first = 1;
...
if( first || p>res ){
res = p;
first = 0;
} |
kada program prvi put dođe do ovog if-a, first će biti 1, i neće se provjeravati drugi uvjet. time ćemo res postaviti na prvu vrijednost p koju izračunamo, a first će postati 0. svaki idući put kada dođemo do if-a, first je 0, pa se provjerava drugi uvjet.
|
|
[Vrh] |
|
BlameGame Forumaš(ica)
Pridružen/a: 14. 09. 2011. (19:17:53) Postovi: (6C)16
|
|
[Vrh] |
|
BlameGame Forumaš(ica)
Pridružen/a: 14. 09. 2011. (19:17:53) Postovi: (6C)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
la mer Forumaš(ica)
Pridružen/a: 19. 09. 2012. (17:39:46) Postovi: (F)16
|
|
[Vrh] |
|
BlameGame Forumaš(ica)
Pridružen/a: 14. 09. 2011. (19:17:53) Postovi: (6C)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 13:26 čet, 17. 1. 2013 Naslov: |
|
|
[quote="la mer"]Ne znam kako da namjestim na onaj standarni izraz.[/quote]
Nadam se da ne ucite "standardni izraz" (ako je to ono prije primjera 11.3.1). To je samo uputa za lakse razumjeti princip, a nikako ne forma koju treba znati.
[quote="la mer"]Može li se to raditi neovisno? Tj, prvo samo sumu srediti, a onda produkt.[/quote]
Smijete. Raspis tog produkta nije trivijalan i ne ocekuje se da to radite, nego upravo kako ste predlozili. Dakle, suma po Horneru, a rezultati sumiranja se izmnoze.
la mer (napisa): | Ne znam kako da namjestim na onaj standarni izraz. |
Nadam se da ne ucite "standardni izraz" (ako je to ono prije primjera 11.3.1). To je samo uputa za lakse razumjeti princip, a nikako ne forma koju treba znati.
la mer (napisa): | Može li se to raditi neovisno? Tj, prvo samo sumu srediti, a onda produkt. |
Smijete. Raspis tog produkta nije trivijalan i ne ocekuje se da to radite, nego upravo kako ste predlozili. Dakle, suma po Horneru, a rezultati sumiranja se izmnoze.
_________________ 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] |
|
BlameGame Forumaš(ica)
Pridružen/a: 14. 09. 2011. (19:17:53) Postovi: (6C)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 18:01 čet, 17. 1. 2013 Naslov: |
|
|
Tko kaze da ne treba? Ako pitas zbog sluzbenog rjesenja ([tt]zad3A.c[/tt]), tamo se ne koristi pomocna varijabla kao u skripti, pa se nema sto azhurirati. Ako pitas zbog neceg drugog, de malo konkretnije pitaj.
Nemojte uciti "kako se to-i-to rjesava" jer ima daleko previse varijacija na temu, a na kolokviju su uvijek donekle originalni zadaci (u smislu da nisu copy/paste iz neceg vidjenog; naravno da jesu u okvirima ispredavanog). Poanta je razumjeti stvari, jer od repliciranja rjesenja nema koristi.
Tko kaze da ne treba? Ako pitas zbog sluzbenog rjesenja (zad3A.c), tamo se ne koristi pomocna varijabla kao u skripti, pa se nema sto azhurirati. Ako pitas zbog neceg drugog, de malo konkretnije pitaj.
Nemojte uciti "kako se to-i-to rjesava" jer ima daleko previse varijacija na temu, a na kolokviju su uvijek donekle originalni zadaci (u smislu da nisu copy/paste iz neceg vidjenog; naravno da jesu u okvirima ispredavanog). Poanta je razumjeti stvari, jer od repliciranja rjesenja nema koristi.
_________________ 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] |
|
BlameGame Forumaš(ica)
Pridružen/a: 14. 09. 2011. (19:17:53) Postovi: (6C)16
|
|
[Vrh] |
|
El_Loco Forumaš(ica)
Pridružen/a: 26. 05. 2012. (15:25:04) Postovi: (31)16
Spol:
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 1:20 pet, 18. 1. 2013 Naslov: |
|
|
[quote="BlameGame"]Da li mozemo jednostavno *n u foo postavit na nula i gotovo, zasto moramo gledati ono NULL operator pa ako je
(!n) n = &c ili
n = (x == 0)[/quote]
Ne mozete [tt]*n[/tt] na nista postaviti ako je [tt]n == NULL[/tt], jer [tt]NULL[/tt] ne mozete dereferencirati. No, na kolokviju mozete pretpostaviti da vam za varijabilni argument nitko nece podmetnuti [tt]NULL[/tt] (osim ako zadatak kaze da i na to pazite, naravno).
Kolega koji je pisao rjesenje koristi varijable koje mu u ostatku funkcije ne trebaju, sto stedi memoriju, ali i malo zbunjuje. Uredno, nakon prve linije funkcije, mozete varijable [tt]a[/tt], [tt]b[/tt] i [tt]c[/tt] zamijeniti nekim pomocnim varijablama (recimo, [tt]i[/tt], [tt]j[/tt], [tt]k[/tt] koje deklarirate lokalno), pa ce biti manje zbunjujuce. Slicno mozete zamijeniti i [tt]x[/tt] u tim linijama i na lijevoj strani pridruzivanja u prvoj liniji.
Gimnastika s [tt]n = &c[/tt] postize da je [tt]*n[/tt] isto sto i [tt]c[/tt], pa se [tt]*n[/tt] moze koristiti bez da se, pri svakom pozivu, provjerava je li [tt]n == NULL[/tt] ili ne. Ta vrijednost nakon funkcije nestaje, jer je [tt]c[/tt] lokalna varijabla. Ako je [tt]n != NULL[/tt], sve radi kako zadatak trazi. No, kako rekoh, to nije razina pedancije koju morate postizati na kolokviju.
BlameGame (napisa): | Da li mozemo jednostavno *n u foo postavit na nula i gotovo, zasto moramo gledati ono NULL operator pa ako je
(!n) n = &c ili
n = (x == 0) |
Ne mozete *n na nista postaviti ako je n == NULL, jer NULL ne mozete dereferencirati. No, na kolokviju mozete pretpostaviti da vam za varijabilni argument nitko nece podmetnuti NULL (osim ako zadatak kaze da i na to pazite, naravno).
Kolega koji je pisao rjesenje koristi varijable koje mu u ostatku funkcije ne trebaju, sto stedi memoriju, ali i malo zbunjuje. Uredno, nakon prve linije funkcije, mozete varijable a, b i c zamijeniti nekim pomocnim varijablama (recimo, i, j, k koje deklarirate lokalno), pa ce biti manje zbunjujuce. Slicno mozete zamijeniti i x u tim linijama i na lijevoj strani pridruzivanja u prvoj liniji.
Gimnastika s n = &c postize da je *n isto sto i c, pa se *n moze koristiti bez da se, pri svakom pozivu, provjerava je li n == NULL ili ne. Ta vrijednost nakon funkcije nestaje, jer je c lokalna varijabla. Ako je n != NULL, sve radi kako zadatak trazi. No, kako rekoh, to nije razina pedancije koju morate postizati na kolokviju.
_________________ 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] |
|
la mer Forumaš(ica)
Pridružen/a: 19. 09. 2012. (17:39:46) Postovi: (F)16
|
|
[Vrh] |
|
Agnes Forumaš(ica)
Pridružen/a: 06. 11. 2012. (20:39:11) Postovi: (8)16
|
|
[Vrh] |
|
zaruljica Forumaš(ica)
Pridružen/a: 23. 09. 2011. (13:15:25) Postovi: (41)16
Spol:
Lokacija: Split/Zagreb
|
Postano: 14:48 sub, 19. 1. 2013 Naslov: |
|
|
evo moj horner od jučer, samo ne znam koliko je točan.. provjerila san za 1 primjer i točno je, pa eto, ko neko vidi grešku nek javi :)
[code:1]double f( int n, double t [ ], double x ) {
double p2 = 0.0, fakt = 1.0, b = 1.0, p;
int k;
for(k = 1;k <= n; k++) {
b = b * (x+1);
fakt = fakt * k;
p = b * (t[k] / fakt);
p2 = p2 + p;
}
p2 = p2 + t[0];
return p2;
}[/code:1]
evo moj horner od jučer, samo ne znam koliko je točan.. provjerila san za 1 primjer i točno je, pa eto, ko neko vidi grešku nek javi
Kod: | double f( int n, double t [ ], double x ) {
double p2 = 0.0, fakt = 1.0, b = 1.0, p;
int k;
for(k = 1;k <= n; k++) {
b = b * (x+1);
fakt = fakt * k;
p = b * (t[k] / fakt);
p2 = p2 + p;
}
p2 = p2 + t[0];
return p2;
} |
_________________ [tex] e ^ {i \pi} + 1 = 0 [/tex]
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 0:59 ned, 20. 1. 2013 Naslov: |
|
|
@zaruljica: To nije Horner. Cim racunas potencije od [tt]x[/tt] (u tvom slucaju, od [tt]x+1[/tt]), to nije Horner nego upravo onakvo racunanje vrijednosti polinoma koje se Hornerom izbjegava (opisano u uvodu poglavlja 11.3 u skripti).
Ako dobro iscitavam tvoje rjesenje, trazilo se
[tex]p(x) = \sum_{k=0}^n \frac{t_k}{k!} (x+1)^k[/tex].
Agnes je tu dala dobar hint, sto se lako vidi i jednostavnim raspisom.
Recimo, za [tex]n = 3[/tex], polinom mozemo raspisati ovako (izlucivanje, takodjer iz uvoda poglavlja 11.3. u skripti):
[tex]\begin{align*}
p(x) &= \sum_{k=0}^n \frac{t_k}{k!} (x+1)^k \\
&= \frac{t_0}{0!} (x+1)^0 + \frac{t_1}{1!} (x+1)^1 + \frac{t_2}{2!} (x+1)^2 + \frac{t_3}{3!} (x+1)^3 \\
&= t_0 + \frac{(x+1)^1}{1} t_1 + \frac{(x+1)^2}{1 \cdot 2} t_2 + \frac{(x+1)^3}{1 \cdot 2 \cdot 3} t_3 \\
&= t_0 + \frac{(x+1)}{1} \left( t_1 + \frac{(x+1)^1}{2} t_2 + \frac{(x+1)^2}{2 \cdot 3} t_3 \right) \\
&= t_0 + \frac{(x+1)}{1} \left( t_1 + \frac{(x+1)}{2} \left( t_2 + \frac{(x+1)^1}{3} t_3 \right) \right) \\
&= t_0 + \frac{(x+1)}{1} \left( t_1 + \frac{(x+1)}{2} \left( t_2 + \frac{(x+1)}{3} \left( t_3 + 0 \right) \right) \right).
\end{align*}[/tex].
U tom slucaju, Horner bi isao ovako nekako (dozvoljavam da sam fulao nesto, posto nisam vidio zadatke):
[code:1]double f(int n, double t[], double x) {
double b = x + 1, p2 = 0;
for (k = n; k >= 0; k--)
p2 = p2 * b / (k+1) + t[k];
return p2;
}[/code:1]
Ponavljam: zadatke nisam vidio i ovo ne moze biti smatrano sluzbenim rjesenjem. No, ako zaruljica nije bas jako fulala formulu, tocno rjesenje bi moralo biti barem slicno ovome.
Molim, ne pitati "koliko bodova nosi ovo gore", jer to spada u diskreciju ispravljaca.
@zaruljica: To nije Horner. Cim racunas potencije od x (u tvom slucaju, od x+1), to nije Horner nego upravo onakvo racunanje vrijednosti polinoma koje se Hornerom izbjegava (opisano u uvodu poglavlja 11.3 u skripti).
Ako dobro iscitavam tvoje rjesenje, trazilo se
[tex]p(x) = \sum_{k=0}^n \frac{t_k}{k!} (x+1)^k[/tex].
Agnes je tu dala dobar hint, sto se lako vidi i jednostavnim raspisom.
Recimo, za [tex]n = 3[/tex], polinom mozemo raspisati ovako (izlucivanje, takodjer iz uvoda poglavlja 11.3. u skripti):
[tex]\begin{align*}
p(x) &= \sum_{k=0}^n \frac{t_k}{k!} (x+1)^k \\
&= \frac{t_0}{0!} (x+1)^0 + \frac{t_1}{1!} (x+1)^1 + \frac{t_2}{2!} (x+1)^2 + \frac{t_3}{3!} (x+1)^3 \\
&= t_0 + \frac{(x+1)^1}{1} t_1 + \frac{(x+1)^2}{1 \cdot 2} t_2 + \frac{(x+1)^3}{1 \cdot 2 \cdot 3} t_3 \\
&= t_0 + \frac{(x+1)}{1} \left( t_1 + \frac{(x+1)^1}{2} t_2 + \frac{(x+1)^2}{2 \cdot 3} t_3 \right) \\
&= t_0 + \frac{(x+1)}{1} \left( t_1 + \frac{(x+1)}{2} \left( t_2 + \frac{(x+1)^1}{3} t_3 \right) \right) \\
&= t_0 + \frac{(x+1)}{1} \left( t_1 + \frac{(x+1)}{2} \left( t_2 + \frac{(x+1)}{3} \left( t_3 + 0 \right) \right) \right).
\end{align*}[/tex].
U tom slucaju, Horner bi isao ovako nekako (dozvoljavam da sam fulao nesto, posto nisam vidio zadatke):
Kod: | double f(int n, double t[], double x) {
double b = x + 1, p2 = 0;
for (k = n; k >= 0; k--)
p2 = p2 * b / (k+1) + t[k];
return p2;
} |
Ponavljam: zadatke nisam vidio i ovo ne moze biti smatrano sluzbenim rjesenjem. No, ako zaruljica nije bas jako fulala formulu, tocno rjesenje bi moralo biti barem slicno ovome.
Molim, ne pitati "koliko bodova nosi ovo gore", jer to spada u diskreciju ispravljaca.
_________________ 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] |
|
zaruljica Forumaš(ica)
Pridružen/a: 23. 09. 2011. (13:15:25) Postovi: (41)16
Spol:
Lokacija: Split/Zagreb
|
Postano: 3:00 ned, 20. 1. 2013 Naslov: |
|
|
hm, sad nisam sigurna jel se baš tražio hornerov algoritam ili samo vrijednost polinoma :roll:
ugl, s obzirom da mi vraća točnu vrijednost polinoma, a u zadatku je pisalo nešto ovako:
Oprez! pazite s faktorijelama jer u cjelobrojnoj aritmetici neće uvijek vratiti korektan rezultat.
u principu, s obzirom da mi u code blocksu radi navedena funkcija, samo me zanima hoće li moje rješenje vratit točno faktorijele?
p.s. uvrstila sam 14 brojeva i opet radi(što znači da funkcionira i za 14!) :roll:
hm, sad nisam sigurna jel se baš tražio hornerov algoritam ili samo vrijednost polinoma
ugl, s obzirom da mi vraća točnu vrijednost polinoma, a u zadatku je pisalo nešto ovako:
Oprez! pazite s faktorijelama jer u cjelobrojnoj aritmetici neće uvijek vratiti korektan rezultat.
u principu, s obzirom da mi u code blocksu radi navedena funkcija, samo me zanima hoće li moje rješenje vratit točno faktorijele?
p.s. uvrstila sam 14 brojeva i opet radi(što znači da funkcionira i za 14!)
_________________ [tex] e ^ {i \pi} + 1 = 0 [/tex]
|
|
[Vrh] |
|
|