From: Doni Pracner Date: Mon, 18 Feb 2013 17:16:13 +0000 (+0100) Subject: Pitagorine trojke - dodatna objasnjenja; X-Git-Tag: v13a~10 X-Git-Url: https://svarog.pmf.uns.ac.rs/gitweb/?a=commitdiff_plain;h=4368ee3a1d9cf76c896d2d8fcbccb7f56cd65e46;p=spa1skripta-public.git Pitagorine trojke - dodatna objasnjenja; --- diff --git a/skripta-spa1.tex b/skripta-spa1.tex index 46328d0..f8923ee 100644 --- a/skripta-spa1.tex +++ b/skripta-spa1.tex @@ -211,6 +211,7 @@ Module 2. \subsection{Zadatak: Pronaći sve pitagorine trojke do zadate granice} +Pitagorina trojka su tri broja $a,b,c$ za koje važi $a^2 + b^2 = c^2\\$ \begin{lstlisting}[style=codeblock] MODULE Trojke1; @@ -269,6 +270,25 @@ BEGIN END Trojke2. \end{codeblock} +Sledeći primer koristi Euklidovu teoremu i malo drugačiji pristup. +Ako uzmemo neka dva prirodna broja $m$ i $n$, tada se iz njih može +izvesti jedna Pitagorina trojka koja lako zadovoljava potrebne uslove: +\[ +\begin{array}{l} +a = 2mn\\ +b = m^2 - n^2\\ +c = m^2 + n^2 +\end{array} +\] +Odnosno kad probamo da proverimo da li je ovo +Pitagorina trojka dobijamo: +\[ +\begin{array}{r@=l} +a^2 + b^2 & c^2\\ +(2mn)^2 + (m^2 - n^2)^2 & (m^2 + n^2)^2 +\end{array} +\] + \begin{codeblock} MODULE Trojke3; (* Pitagorine trojke koriscenjem teoreme *) @@ -295,6 +315,8 @@ BEGIN END Trojke3. \end{codeblock} +Sledeća dva metoda traže trojke sa nekim specifičnim osobinama. + \begin{codeblock} MODULE Trojke4; (* Pitagorine trojke kod kojih je razlika @@ -542,7 +564,8 @@ END MaxNiza4. \subsection{Modul FIO} U ovom modulu je definisan tip \kod{File}, koji predstavlja jedan fajl -sa kojim radimo. +sa kojim radimo. Da bi ga koristili moramo ga uvesti u program (isto +kao što uvozimo i komande). \begin{quote}U primerima se pretpostavlja da je ``f'' tipa \kod{File}, ``str'' niz znakova, ``i'' tipa \kod{INTEGER}, ``c'' tipa \kod{CARDINAL} i ``ch'' diff --git a/todo.txt b/todo.txt index 59e0615..8bd5852 100644 --- a/todo.txt +++ b/todo.txt @@ -94,110 +94,4 @@ doni:srediti polinome jos malo doni: liste - dodati nesto gde se brise vise elemenata u istom prolazu. -vlada:dodati teoremu o pitagorinim trojkama i mozda jos -neka objasnjenja - doni:ubaciti negde primer kako radi Compare za stringove - ----------------------------- -mils:mozda bi to dodatu funkciju SaberiNa -trebalo inkorporirati u zadatak 4.2 (jedan polinom manje sto se potrosnje -memorije tice i jedan Dispose manje sto se procesora tice). - ----------------------------- -da li dodati i druge slicne procedure osim SaberiNa? - -doni:diskuijom zakljuceno da je ovo valjda i dosta, tj da je dovoljno -za demonstraciju. ---------------------------- -StekTip i RedOpslTip umesto Stack i Queue - -doni:uradjeno ----------------------------- -Polinomi - redosled parametara jos malo unormaliti? kopija je nekako kontra? -optimizacije u vezi oslobadjanja memorije - Anuliraj bi mogao zvati Dispose -za svaki slucaj. Saberi i slicno bi isto mogli biti izmenjeni. -Mozda cak da bude SaberiNa(sab:Polinom; VAR rez:Polinom) pa da -sve bude u tom jednom, da se ne bi bacala memorija kad je sab(rez,sab,rez). - -doni:uradjeno - ----------------------- -Radacha: -- na vise mesta imamo niz naredbi: -Read(ch); -Write(ch); -Sve Write-ove treba pobrisati da bi kod imao smisla na XDS Moduli. - -- ponegde se javlja tip LONGCARD, pa se jos mixuje sa CARDINAL tako -sto se radi cast oblika LONGCARD(x), sto na XDS Moduli ne moze. -Valjalo bi sve LONGCARD-e izbaciti, posto su na XDS-u ionako isti -kao CARDINAL. - -doni:ovo je sredjeno ------------------------- -Igor Sarcevic - bug submit: (patched) --------------- -Pozivom *PolinomNaN( p, 1 , rez )* procedura vraca *rez* koji je pokazivac -na strukturu na koju pokazuje *p* -* -* -greshka se nalazi u 12. redu poshto u sluchaju da je n = 1 for petlja ne -izvrshi ni jednom pa se stim ni ne kopira p u rez - -PROCEDURE PolinomNaN(p: Polinom; n: CARDINAL; - VAR rez: Polinom); -VAR - i: CARDINAL; -BEGIN - IF n = 0 THEN - NEW(rez); - rez^.k := 1.0; - rez^.st := 0; - rez^.veza := NIL; - ELSE - *rez := p;* - FOR i := 2 TO n DO - Puta(rez, p, rez) - END - END; -END PolinomNaN; - - -jednostavan patch : - -PROCEDURE PolinomNaN(p: Polinom; n: CARDINAL; - VAR rez: Polinom); -VAR - i: CARDINAL; -BEGIN - IF n = 0 THEN - NEW(rez); - rez^.k := 1.0; - rez^.st := 0; - rez^.veza := NIL; -* ELSIF n = 1 THEN* -* Kopiraj( rez, p );* - ELSE - rez := p; - FOR i := 2 TO n DO - Puta(rez, p, rez) - END - END; -END PolinomNaN; - - -mozda u sushtini nema smisla stepenovati na stepen 1 , ali recimo u -izvodjenju procedure kompozicija ima ( inache pochne program da brljavi kao -meni na vezbama ) - -doni:patchovano - ------------------------ -Radacha2: - -evo necega za PolinomL: u procedurama Unos i Deli posle poziva -procedure UbaciMonom treba ubaciti DISPOSE(novi), da ne curi memorija. - -doni:patchovano ------------------------