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


Pridružen/a: 04. 09. 2007. (15:33:59) Postovi: (399)16
Lokacija: Exotica
|
Postano: 23:19 pon, 24. 12. 2007 Naslov: |
|
|
[code:1]
#include <stdio.h>
int main(void)
{
int n, i, zbroj, prvi = 0;
scanf ( "%d", &n );
for ( i = 1; i <= n ; i = i + 2);
{prvi = prvi + 2 * i;}
zbroj = ((n + n * n) / 2) + prvi;
printf ( "%d", zbroj );
scanf("%%");
return 0;
}
[/code:1]
Zadatak 8.12 iz skripta... Znam da u skriptama postoji rješenje, ali ja sam probao drugačije.
Ideja mi je bila prvo zbrojiti sve brojeve do n (taj zbroj sam nazvao "prvi"), a zatim tome još pribrojiti sve neparne puta dva.
Sad, nisam siguran da sam uopće dobro shvatio zadatak ali, neovisno o tome (ako mi sama ideja i je pogrešna), ne razumijem zašto mi program izbacuje rezultate kakve mi izbacuje...
Ako za n upišem 8, izbaci mi 54 umjesto 68. Ako upišem 5, izbaci mi 29 umjesto 33. Pa me zanima zašto. Hvala. ;)
Kod: |
#include <stdio.h>
int main(void)
{
int n, i, zbroj, prvi = 0;
scanf ( "%d", &n );
for ( i = 1; i <= n ; i = i + 2);
{prvi = prvi + 2 * i;}
zbroj = ((n + n * n) / 2) + prvi;
printf ( "%d", zbroj );
scanf("%%");
return 0;
}
|
Zadatak 8.12 iz skripta... Znam da u skriptama postoji rješenje, ali ja sam probao drugačije.
Ideja mi je bila prvo zbrojiti sve brojeve do n (taj zbroj sam nazvao "prvi"), a zatim tome još pribrojiti sve neparne puta dva.
Sad, nisam siguran da sam uopće dobro shvatio zadatak ali, neovisno o tome (ako mi sama ideja i je pogrešna), ne razumijem zašto mi program izbacuje rezultate kakve mi izbacuje...
Ako za n upišem 8, izbaci mi 54 umjesto 68. Ako upišem 5, izbaci mi 29 umjesto 33. Pa me zanima zašto. Hvala.
|
|
[Vrh] |
|
ma Forumaš(ica)


Pridružen/a: 27. 01. 2007. (12:06:50) Postovi: (347)16
Spol: 
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 1:16 uto, 25. 12. 2007 Naslov: |
|
|
Tocno tako, ma. =D>
@Atomised: ako zelis preskociti koristenje [tt]for()[/tt]-petlje, onda mozes ovako:
[code:1]#include <stdio.h>
int sum1n(int n) {
return n * (n + 1) / 2;
}
int main(void) {
int n, i, sum1 = 0, sum2, sum3;
printf("Unesite broj: ");
scanf("%d", &n);
for (i = 1; i <= n; i++)
sum1 += (i % 2 ? 3 : 1) * i;
sum2 = 3 * sum1n(n) - 4 * sum1n(n / 2);
sum3 = sum1n(n) + 2 * ((n+1) / 2) * ((n+1) / 2);
printf("Sum1 = %d\nSum2 = %d\nSum3 = %d\n", sum1, sum2, sum3);
return 0;
}[/code:1]
[size=19][b]Prva suma[/b][/size]
...je iz sluzbenog rjesenja. ;)
[size=19][b]Druga suma[/b][/size]
Suma prvih [i]n[/i] prirodnih brojeva je:
[latex]S_n = \frac{n(n+1)}2[/latex]
kako si i napisao. :) No, onda je suma svih parnih prirodnih brojeva manjih ili jednakih [i]n[/i] jednaka
[latex]P_n = 2 + 4 + \dots + 2\left\lfloor\frac{n}2\right\rfloor = 2 \left(1 + 2 + \dots + \left\lfloor\frac{n}2\right\rfloor\right) = 2S_{\left\lfloor\frac{n}2\right\rfloor}[/latex]
pa je ono sto se u zadatku trazi
[latex]S = 3S_n - 2P_n = 3S_n - 4S_{\left\lfloor\frac{n}2\right\rfloor}[/latex]
[size=19][b]Treca suma[/b][/size]
...se bazira na cinjenici da je suma prvih [i]n[/i] neparnih prirodnih brojeva jednaka [latex]n^2[/latex], te na cinjenici da od 1 do [i]n[/i] imas [latex]\left\lceil\frac{n}2\right\rceil = \left\lfloor\frac{n+1}2\right\rfloor[/latex] neparnih prirodnih brojeva. 8) Dokaz prepustam tebi (indukcija). ;)
Jasno, svrha zadatka je vjezbanje petlji (izmedju ostalog da osjetis onaj [tt];[/tt] i da ti se to ne desi onda kad ne smije). :)
Tocno tako, ma.
@Atomised: ako zelis preskociti koristenje for()-petlje, onda mozes ovako:
Kod: | #include <stdio.h>
int sum1n(int n) {
return n * (n + 1) / 2;
}
int main(void) {
int n, i, sum1 = 0, sum2, sum3;
printf("Unesite broj: ");
scanf("%d", &n);
for (i = 1; i <= n; i++)
sum1 += (i % 2 ? 3 : 1) * i;
sum2 = 3 * sum1n(n) - 4 * sum1n(n / 2);
sum3 = sum1n(n) + 2 * ((n+1) / 2) * ((n+1) / 2);
printf("Sum1 = %d\nSum2 = %d\nSum3 = %d\n", sum1, sum2, sum3);
return 0;
} |
Prva suma
...je iz sluzbenog rjesenja.
Druga suma
Suma prvih n prirodnih brojeva je:
kako si i napisao. No, onda je suma svih parnih prirodnih brojeva manjih ili jednakih n jednaka
pa je ono sto se u zadatku trazi
Treca suma
...se bazira na cinjenici da je suma prvih n neparnih prirodnih brojeva jednaka , te na cinjenici da od 1 do n imas neparnih prirodnih brojeva. Dokaz prepustam tebi (indukcija).
Jasno, svrha zadatka je vjezbanje petlji (izmedju ostalog da osjetis onaj ; i da ti se to ne desi onda kad ne smije).
_________________ 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] |
|
Atomised Forumaš(ica)


Pridružen/a: 04. 09. 2007. (15:33:59) Postovi: (399)16
Lokacija: Exotica
|
|
[Vrh] |
|
mischa Forumaš(ica)


Pridružen/a: 15. 09. 2007. (17:52:41) Postovi: (D8)16
Spol: 
|
|
[Vrh] |
|
mdoko Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: 
Lokacija: Heriot-Watt University, Edinburgh
|
|
[Vrh] |
|
vsego Site Admin


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


Pridružen/a: 15. 09. 2007. (17:52:41) Postovi: (D8)16
Spol: 
|
|
[Vrh] |
|
bixodococo Forumaš(ica)


Pridružen/a: 22. 11. 2007. (20:26:24) Postovi: (7F)16
Spol: 
|
|
[Vrh] |
|
|