Stranica 1 od 1

[Pascal] Petlja for...

PostPoslato: Nedelja, 02. Novembar 2014, 12:06
od Miladin Jovic
Zadatak glasi:
[dispmath]S=\sum_{k=1}^n\frac{(x-3)^k}{k^n}[/dispmath]
Treba napisati program koji za ceo broj [inlmath]n[/inlmath] i broj [inlmath]x[/inlmath] izračunava [inlmath]S[/inlmath].
Imam rešenje i ono ovako glasi:

Kôd: Obeleži sve
program suma;
Var i,j,n:inteeger;
x,s:real;
p:longint;
Begin
readln(n);
readln(x);
s:=0;
k:=1;
for i:=1 to n do begin
   k:=k*(x-3);
   p:=1;
      for j:==1 to n do p:=p*i;
   s:=s+k/p;
end;
writeln(s:10:6);end.

Ako bi mogao neko da objasni ovu drugu petlju, ne razumem je. On nam omogućava da ispod razlomačke crte piše kod prvog razlomka [inlmath]1^n[/inlmath], kod drugog [inlmath]2^n[/inlmath] do [inlmath]n^n[/inlmath].
Ali mi ovaj kod nije jasan kako on to radi, kad ne postoji funkcija za stepenovanje (osim za kvadriranje i funkcije [inlmath]e^x[/inlmath]).

Re: [Pascal] Petlja for...

PostPoslato: Nedelja, 02. Novembar 2014, 14:15
od ubavic
U slučaju kad je izložilac ([inlmath]\mathtt{n}[/inlmath]) ceo broj, stepenovanje možemo definisati kao:
[dispmath]k^n=1\times\underbrace{k\times k\times k\times\cdots\times k }_{n\;\mathrm{puta}}\quad\left(n\in\mathbb{N}\right)[/dispmath]
Ta petlja upravo koristi gornju jednakost, množeći broj [inlmath]\mathtt{k}[/inlmath] samim sobom [inlmath]\mathtt{n}[/inlmath] puta.

Re: [Pascal] Petlja for...

PostPoslato: Nedelja, 02. Novembar 2014, 15:43
od Daniel
@Miladin
Imaš greške u kodu – nigde nisi definisao promenljivu [inlmath]\mathtt{k}[/inlmath] (treba da bude real tipa). Imaš i udvojeno e i udvojen znak = (slovne greške u samim postovima još i možemo tolerisati (iako nisu preporučljive), ali one u kodu nisu dopuštene – zbog slovnih grešaka program, jednostavno – ne radi :) ).

Re: [Pascal] Petlja for...

PostPoslato: Nedelja, 02. Novembar 2014, 19:01
od Miladin Jovic
Kôd: Obeleži sve
p:=1
...p:=p*i

Dakle, tu je [inlmath]p=1[/inlmath] ,a zatim [inlmath]p[/inlmath] dodeljujemo [inlmath]p\cdot i[/inlmath] odnosno dodeljujemo [inlmath]1\cdot i[/inlmath], pa kako je ovde [inlmath]i[/inlmath] proizvod [inlmath]p[/inlmath] [inlmath]n[/inlmath] puta?

Re: [Pascal] Petlja for...

PostPoslato: Nedelja, 02. Novembar 2014, 19:19
od ubavic
Zato što se to radi tačno [inlmath]\mathtt{n}[/inlmath] puta, što je i razlog zašto koristimo for petlju. Pogledaj:
U prvom prolazu ([inlmath]\mathtt{j}=1[/inlmath]), imamo [inlmath]\mathtt{p}=\mathtt{p}\times\mathtt{i}=1\times\mathtt{i}=\mathtt{i}[/inlmath].
U drugom prolazu ([inlmath]\mathtt{j}=2[/inlmath]), imamo [inlmath]\mathtt{p}=\mathtt{p}\times\mathtt{i}=\mathtt{i}\times\mathtt{i}=\mathtt{i}^2[/inlmath].
U trećem prolazu ([inlmath]\mathtt{j}=3[/inlmath]), imamo [inlmath]\mathtt{p}=\mathtt{p}\times\mathtt{i}=\mathtt{i}^2\times\mathtt{i}=\mathtt{i}^3[/inlmath].
....
U [inlmath]n[/inlmath]-tom prolazu ([inlmath]\mathtt{j}=n[/inlmath]), imamo [inlmath]\mathtt{p}=\mathtt{p}\times\mathtt{i}=\mathtt{i}^{n-1}\times\mathtt{i}=\mathtt{i}^n[/inlmath].

Re: [Pascal] Petlja for...

PostPoslato: Nedelja, 02. Novembar 2014, 19:59
od Miladin Jovic
Ali nama pre druge petlje piše da je [inlmath]p:=1[/inlmath], zar onda u drugom ponavljanju ove prve petlje (u kojoj se nalazi ova druga) a to je istovremeno i drugo ponavljanje ove druge , ne dodeljuje broj [inlmath]1[/inlmath] variabli [inlmath]p[/inlmath]. Pa onda [inlmath]p[/inlmath] nema stečenu vrednost prvim ponavljanjem tj. [inlmath]p:=i[/inlmath].
To su još neke nedoumice.

Re: [Pascal] Petlja for...

PostPoslato: Nedelja, 02. Novembar 2014, 20:53
od Daniel
Nazovimo prvu i drugu petlju spoljašnjom i unutrašnjom petljom, da ne bude zabune. :) Unutrašnja petlja se, logično, nalazi unutar spoljašnje. :)

Dobro si rekao, pri svakom ponavljanju spoljašnje petlje vrednost promenljive [inlmath]\mathtt{p}[/inlmath] se vraća na [inlmath]1[/inlmath]. I ta jedinica je inicijalna vrednost promenljive [inlmath]\mathtt{p}[/inlmath] prilikom novog ulaska u unutrašnju petlju, u kojoj se [inlmath]\mathtt{p}[/inlmath] množi sa [inlmath]\mathtt{i}[/inlmath] onoliko puta koliko iznosti [inlmath]\mathtt{n}[/inlmath], što znači da će [inlmath]\mathtt{p}[/inlmath] nakon izlaska iz unutrašnje petlje imati vrednost [inlmath]\mathtt{i}^n[/inlmath].

Znači, u prvom prolasku kroz spoljašnju petlju, kada je [inlmath]\mathtt{i}[/inlmath] jednako jedinici, u unutrašnjoj petlji će se računati [inlmath]\mathtt{p}=1\cdot\underbrace{\mathtt{i}\cdot\mathtt{i}\cdots\mathtt{i}}_{n\mbox{ puta}}=1\cdot\underbrace{1\cdot 1\cdots 1}_{n\mbox{ puta}}=1^n[/inlmath].
U drugom prolazu kroz spoljašnju petlju [inlmath]\mathtt{i}[/inlmath] je jednako dvojci, [inlmath]\mathtt{p}[/inlmath] se ponovo vraća na jedinicu i u unutrašnjoj petlji će se računati [inlmath]\mathtt{p}=1\cdot\underbrace{\mathtt{i}\cdot\mathtt{i}\cdots\mathtt{i}}_{n\mbox{ puta}}=1\cdot\underbrace{2\cdot 2\cdots 2}_{n\mbox{ puta}}=2^n[/inlmath].
U trećem prolazu kroz spoljašnju petlju [inlmath]\mathtt{i}[/inlmath] je jednako trojci, [inlmath]\mathtt{p}[/inlmath] se ponovo vraća na jedinicu i u unutrašnjoj petlji će se računati [inlmath]\mathtt{p}=1\cdot\underbrace{\mathtt{i}\cdot\mathtt{i}\cdots\mathtt{i}}_{n\mbox{ puta}}=1\cdot\underbrace{3\cdot 3\cdots 3}_{n\mbox{ puta}}=3^n[/inlmath].
[inlmath]\vdots[/inlmath]
U [inlmath]\mathtt{n}[/inlmath]-tom (i poslednjem) prolazu kroz spoljašnju petlju [inlmath]\mathtt{i}[/inlmath] je jednako vrednosti promenljive [inlmath]\mathtt{n}[/inlmath], [inlmath]\mathtt{p}[/inlmath] se ponovo vraća na jedinicu i u unutrašnjoj petlji će se računati [inlmath]\mathtt{p}=1\cdot\underbrace{\mathtt{i}\cdot\mathtt{i}\cdots\mathtt{i}}_{n\mbox{ puta}}=1\cdot\underbrace{\mathtt{n}\cdot\mathtt{n}\cdots\mathtt{n}}_{n\mbox{ puta}}=n^n[/inlmath].