gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/skripta-spa1.tex b/skripta-spa1.tex
--- a/skripta-spa1.tex
+++ b/skripta-spa1.tex
\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;
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 *)
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
\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''
\paragraph{PolinomL.MOD} \
\begin{codeblock}
+(* Modul za rad sa polinomima preko listi
+ verzija 2012, rev 1 *)
IMPLEMENTATION MODULE PolinomL;
FROM InOut IMPORT Write, WriteString, WriteLn,
WriteCard, ReadCard, Done;
PROCEDURE Anuliraj(VAR p: Polinom);
BEGIN
- IF p # NIL THEN
- DisposePolinom(p);
- END;
+ p := NIL;
END Anuliraj;
-PROCEDURE Kopiraj(p: Polinom;
- VAR kopija: Polinom);
+PROCEDURE Kopiraj(p: Polinom; VAR kopija: Polinom);
VAR
pomocni: Polinom;
BEGIN
END
END Stampaj;
-PROCEDURE UbaciMonom(mon :Polinom;
- VAR p: Polinom);
+PROCEDURE UbaciMonom(mon:Polinom; VAR p: Polinom);
VAR
stari, tekuci, kopija: Polinom;
BEGIN
ELSE
stari^.veza := kopija
END;
- IF (tekuci#NIL) AND
- (kopija^.st = tekuci^.st) THEN
+ IF (tekuci#NIL) AND (kopija^.st = tekuci^.st) THEN
kopija^.k := kopija^.k + tekuci^.k;
kopija^.veza := tekuci^.veza;
DISPOSE(tekuci);
NEW(novi);
WITH novi^ DO
REPEAT
- WriteString('koeficijent monoma br.');
+ WriteString('Unesite koeficijent monoma br.');
WriteCard(i, 1);
- WriteString(' (<> 0):');
+ WriteString(' (<> 0) ');
ReadReal(k);
WriteLn
UNTIL k <> 0.0;
REPEAT
WriteLn;
- WriteString('eksponent monoma br.');
+ WriteString('Unesite eksponent monoma br.');
WriteCard(i, 1);
- WriteString(' (>= 0): ');
+ WriteString(' (>=0) ');
ReadCard(st);
UNTIL Done;
WriteLn;
END
END Unos;
-PROCEDURE Saberi(p1, p2: Polinom;
- VAR zbir: Polinom);
+PROCEDURE Saberi(p1, p2: Polinom; VAR zbir: Polinom);
BEGIN
Kopiraj(p1, zbir);
WHILE p2 <> NIL DO
END
END Saberi;
-PROCEDURE SaberiNa(p: Polinom;
- VAR rez: Polinom);
+PROCEDURE SaberiNa(p: Polinom; VAR rez: Polinom);
BEGIN
WHILE p <> NIL DO
UbaciMonom(p,rez);
END
END PromeniZnak;
-PROCEDURE Oduzmi(p1,p2: Polinom;
- VAR razlika: Polinom);
+PROCEDURE Oduzmi(p1,p2: Polinom; VAR razlika: Polinom);
BEGIN
Kopiraj(p2, razlika);
PromeniZnak(razlika);
END
END Oduzmi;
-PROCEDURE MonomPuta(p, mon: Polinom;
- VAR mp: Polinom);
+PROCEDURE MonomPuta(p, mon: Polinom; VAR mp: Polinom);
VAR
tekuci: Polinom;
BEGIN
END
END Puta;
-PROCEDURE Kolicnik(p1, p2: Polinom;
- VAR kol, ost: Polinom;
- VAR ok: BOOLEAN);
+PROCEDURE Kolicnik(p1, p2: Polinom; VAR kol, ost: Polinom; VAR ok: BOOLEAN);
PROCEDURE Deli(VAR kol, ost: Polinom);
VAR
rez^.st := 0;
rez^.veza := NIL;
ELSIF n = 1 THEN
- Kopiraj( rez, p );
+ Kopiraj( p, rez );
ELSE
rez := p;
FOR i := 2 TO n DO