|
[ bratovuk @ 23.03.2007. 19:58 ] @
| Zadatak:
Napisati program za izracunavanje n-tog stepena celog broja a.
Resenje: ( Iz Cabarkapine knjige..)
Code:
program stepen(input,output);
var a,n,i,stepen:integer;
begin
readln(a,n);
stepen:=1;
i:=1;
while i<=n do
begin
stepen:=stepen*a;
i:=i+1;
end;
writeln('stepen=', stepen);
readln;
end.
Pitanja:
1) zbog cega se dodeljuje vrednost: stepen:=1; i i:=1?
2) zbog cega se pise: while i<=n do?
3) zasto je sad stepen:=stepen*a?
4) zasto je i:=i+1?
PS. Ostalo znam
PS2. Nemojte mi reci da je pascal najlaksi jezik?!?...(ps3..postajem depresivan,krenuo sam pre mesec dana da ucim T pascal, mnogo sporo napredujem, jel to normalno?)
Hvala svima unapred.......
|
[ X Files @ 23.03.2007. 21:38 ] @
Citat:
1) zbog cega se dodeljuje vrednost: stepen:=1; i i:=1?
stepen:=1 je takozvana inicijalna vrednost za množenje, jer bi u suprotnom,
unutar brojača stepen:=stepen*a, trenutne rezultate množio sa NULOM i ne
bi ništa postigao, rezultat bi ostao NULA.
Citat:
2) zbog cega se pise: while i<=n do?
To je uslov koji obezbeđuje petlji da se vrti dok god je ispunjen (i<=n).
i se uvećava u svakom prolazu dok god ne bude veći od N kada se izlazi iz petlje.
Citat:
3) zasto je sad stepen:=stepen*a?
Ovo je isto kao kod brojača, vrednost sa desne strane se dodeljuje levoj strani.
Citat:
4) zasto je i:=i+1?
To je brojač koji se uvećava, i dovodi do vrednosti kada se izlazi iz petje.
Ovo je malo nejasno jer se moglo postići i sa FOR petljom, prirodnije. To je verovatno
bio neki primer za WHILE.
[ bratovuk @ 25.03.2007. 10:30 ] @
Citat: To je verovatno
bio neki primer za WHILE.
...upravo tako!.. Hvala X Files na detaljima :)!
[ Wajda.W @ 27.03.2007. 11:20 ] @
koliko se meni cini to je samo za vrednosti n>=0
treba dodati uslov sa grananjem za n>=0 i n<0
posle izracunavanja stepena. nesto ovako:
Code:
.
.
.
while i<=n do
begin
stepen:=stepen*a;
i:=i+1;
end;
if(n<0) than stepen:=1/stepen;
writeln('stepen=', stepen);
readln;
end.
mozda ima gresaka jer se bas ne doznam mnogo u pascal
[ bratovuk @ 28.03.2007. 01:50 ] @
Citat: mozda ima gresaka jer se bas ne doznam mnogo u pascal
ima greska!...pokusao sam da resim al mi treba mala pomoc:
Code:
program BrojANaBrojN;
var: a,i,n:integer;
stepen:real;
begin
readln(a,n);
stepen:=1;
i:=1;
while i<=n do
begin
stepen:=stepen*a;
i:=i+1;
end;
if (n<0) then
begin
stepen:=BROJ a NA BROJ abs(n); { Kako ovo da napisem u pascalu?????}
stepen:=1/stepen;
end;
writeln('stepen=',stepen:10:2);
readln;
end.
Trebalo bi da sam sve napisao ispravno.
Fali mi samo... stepen:=BROJ a NA BROJ abs(n), kako to da napisem? Da li moze preko exp(x)?
Hvala.
[ X Files @ 28.03.2007. 07:24 ] @
Citat:
Da li moze preko exp(x)?
Trebalo bi da može ovako (nisam testirao):
an = exp ( n * ln ( a ) )
...ali svakako obrati pažnju na *tipove*, da ne bi rezultat bio približan.
Odavno nisam u Pascal svetu, pa ne znam šta kažu standardi, ali svakako proveri i da li može:
an = a ** n
... ili čak i:
an = POW ( a, n )
(ukoliko kompajler ima neku (ne)standardnu ekstentiju)
[ Wajda.W @ 28.03.2007. 09:42 ] @
E a mozda da u while petlji stavis abs(n) to moze "peske" da se napise kao sqrt(n*n)
i onda ti while petlja racuna uvek za pozitivne vrednosti i posle samo proveris da li je manje od 0 i ako jeste napravis reciprocnu vrednost.
tako bar moze u c-u , verovatno moze i u pascalu
[ bratovuk @ 28.03.2007. 13:45 ] @
@X Files
Hvala, al ne ide:(
Citat: an = exp ( n * ln ( a ) )
kada to ubacim resava stepen:=1/stepen kao stepen:=stepen*a, ne razumem zasto..
Citat: an = a ** n
... ili čak i:
an = POW ( a, n )
Citat: Odavno nisam u Pascal svetu, pa ne znam šta kažu standardi, ali svakako proveri i da li može
Hehe...ne moze, error:)!..
Hvala na trudu...mucicu se ja jos malo :)!
Tnx!
[ bratovuk @ 28.03.2007. 13:50 ] @
@Wajda.W
Ti mi vajda zagorca zivot :) sa ovim: Citat: koliko se meni cini to je samo za vrednosti n>=0
treba dodati uslov sa grananjem za n>=0 i n<0
posle izracunavanja stepena.
Budi sad ljubazan i resi misteriju;)!
inace, ovo ne pali u pascalu, barem ne kod mene: Citat: E a mozda da u while petlji stavis abs(n) to moze "peske" da se napise kao sqrt(n*n)
i onda ti while petlja racuna uvek za pozitivne vrednosti i posle samo proveris da li je manje od 0 i ako jeste napravis reciprocnu vrednost.
tako bar moze u c-u , verovatno moze i u pascalu
Pozdrav!
[ Srki_82 @ 28.03.2007. 15:05 ] @
Napisi sam funkciju za dizanje nekog broja na neki stepen... npr ovako:
Code: function Pow(n, s: Longint): Longint;
begin
if s = 0 then
Pow := 1
else
Pow := n * Pow(n, s - 1);
end;
i onda je samo pozovi u kodu
Code: stepen:= Pow(BROJ, abs(n));
[ savkic @ 28.03.2007. 15:36 ] @
> an = exp ( n * ln ( a ) )
> kada to ubacim resava stepen:=1/stepen kao stepen:=stepen*a, ne razumem zasto..
Nisam razumeo šta ti ne radi.
function Power(const a, n: Extended): Extended;
begin
Result := Exp(Ln(a) * n);
end;
A na N = Power(A, N);
Nti koren iz A = Power(A, 1 / N);
Power(2, 5) = 32;
Power(2, 1 / 2) = 1.41...;
[ bratovuk @ 28.03.2007. 16:04 ] @
@Srki82
Citat: Opravi ga Srki svaka mu cast! :)
Radi! Hvala.
@savkic
Tnx na odgovoru, pokusacu i na taj nacin!
Pozdrav!
[ Srki_82 @ 28.03.2007. 17:02 ] @
Radi i moje, a radi i kod koji je napisao savkic, a moze da se uradi i na jos nacina... poenta nije u tome da li radi ili ne, nego u tome da li ti razumes zasto nesto radi ili ne. Namerno sam napisao funkciju onako kako sam je napisao da bih video da li ti je jasno sta se u njoj desava... i... da li znas zasto to radi?
[ bratovuk @ 28.03.2007. 19:16 ] @
@Srki82
Pocetnik sam.Paskal ucim od 1.Marta.
Da budem iskren, nije mi jasno! Cak ni ne znam sta radi f-ja u TP, kakve osobine ima...
Sa ucenjem sam stigao do petlji (while-do, repeat-until,for..)..
Koja je uloga f-ja u TP? Ako nije problem da se objasni,"odokativno", Hvala:).
..
[ savkic @ 29.03.2007. 00:47 ] @
> Pocetnik sam.Paskal ucim od 1.Marta.
> Da budem iskren, nije mi jasno! Cak ni ne znam sta radi f-ja u TP, kakve osobine ima...
> Sa ucenjem sam stigao do petlji (while-do, repeat-until,for..)..
> Koja je uloga f-ja u TP? Ako nije problem da se objasni,"odokativno", Hvala:).
To je proces koji moraš sam preći, moj ti je savet da nabaviš neku knjigu (za Pascal je najbolja Turbo Pascal Kompletan vodič - Stephen O'Brien) i naučiš osnove jezika. Ukucaj dobijene primere u editor i startuj izvršavanje programa red po red (moraš naučiti rad sa debuggerom) i proveri koliko god da treba, dan, dva, nedelju u prolasku kroz primere dok ne shvatiš.
[ bratovuk @ 29.03.2007. 14:34 ] @
Citat: (za Pascal je najbolja Turbo Pascal Kompletan vodič - Stephen O'Brien)
ne moguca misija:)..hvala na savetu!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|