Řešení |
||
Šablona pascalského programuprogram název; var proměnná 1, proměnná 2 :
Real;
delay (1000); {< - po čká 1 sekundu} write ('stiskni cokoli a program skončí'); repeat until keypressed; {PC čeká na stisk libovolné klávesy - aby zůstal vidět výsledek na obrazovce} end. 3 Největší dělitel - verze obrněná proti idiotským vstupům pro úspěšné řešení neumíš jedinou věc - ABS(A) je absolutní hodnota čísla A! program NejvDelitel; var A, B : Integer; begin Write ( 'Největší společný dělitel ' ); Write ( 'Zadejte dvě čísla ' ); Read ( A, B ); if A * B = 0 then Writeln ( 'Nula nemá dělitele' ) else begin A := Abs(A); B := Abs(B); while A <> B do if A > B then A := A - B else B := B - A; Write ( 'Největší společný dělitel je ', A ); end; end. 3.4 Porovnání cyklu while oproti cyklu repeat until:program while_versus_repeat_until; 4 Obvod a plocha pravoúhlého trojúhelníka program Pythagoras; var A, B, C : Real; begin Write ( 'Velikost pravoúhlého trojúhelníka ' ); Write ( 'Zadejte odvěsny A a B: ' ); Read ( A, B ); C := Sqrt( Sqr(A) + Sqr(B) ); Write ( ' Obvod = ', A+B+C ); Write ( ' Plocha = ', (A*B)/2 ); end. 4.2 Výpočty ze vztahů:po napsání v okně uvedeného programu ti vyjdou dole uvedené hodnoty (ale jde to v pohodě i zpaměti bez programování!)
5.2.3 Dělitelnost 6.1.5 ASCII tabulka: efektně a radostně (by Martin Zamastil) Předpokládám, že neznámé příkazy nepotřebují komentář... Program ASCII_table; {author Martin Zamastil} {$A+,B-,D+,E+,F-,G-,I+,L+,N+,O-,R-,S+,V+,X+}
uses crt,dos; var znb,a,b,c,d: byte;
begin textbackground(1); clrscr; b:= 2; c:= 1; textcolor(7); for a:= 0 to 255 do begin mem[$B800:((c-1)*160)+(b*2)]:=a; mem[$B800:((c-1)*160)+(b*2)+1]:= 14+16; gotoXY(b+3,c); write(a); inc(c); if c>24 then begin c:= 1; inc(b,7); end; end; readln; end. 7. Autobus - aneb vstup dat téměř blbovzdorně program vytizeni; 9.2.3 Píle pracovnic program Pracovnice; const PocetProd = 8; var Obslouzeno : array [1..PocetProd] of Integer; Prod, MaxProd, MaxZak : Integer; begin for Prod := 1 to PocetProd do Obslouzeno[Prod] := 0; Write ( 'Píle prodavaček. ' ); Write ( 'Zadávejte čísla, 0 ukončí. ' ); Read ( Prod ); while (Prod > 0) and (Prod <= PocetProd) do begin Obslouzeno[Prod] := Obslouzeno[Prod] + 1; Read ( Prod ); end; MaxProd := 1; MaxZak := Obslouzeno[1]; for Prod := 2 to PocetProd do if Obslouzeno[Prod] > MaxZak then begin MaxProd := Prod; MaxZak := Obslouzeno[Prod]; end; Write ( 'Nejpilnější je ', MaxProd ); end. 9.3.4 Délka slov program DelkySlov; const MaxDelka = 80; {max. délka slova} Konec = '@'; {ukončující znak} var PocetSlov : array [1..MaxDelka] of Integer; Delka : Integer; Znak : Char; begin for Delka := 1 to MaxDelka do PocetSlov[Delka] := 0; Delka := 0; Read ( Znak ); while Znak <> Konec do begin case Znak of 'A'..'Z', 'a'..'z' : Delka := Delka + 1; else begin if Delka > 0 then if Delka > MaxDelka then Write ( 'Slibovali mi maximálně ', MaxDelka, ' znaků!' ) else PocetSlov[Delka] := PocetSlov[Delka] + 1; Delka := 0; end; end; Read ( Znak ); end; if Delka > 0 then if Delka > MaxDelka then Write ( 'Slibovali mi maximálně ', MaxDelka, ' znaků!' ) else PocetSlov[Delka] := PocetSlov[Delka] + 1; for Delka := 1 to MaxDelka do if PocetSlov[Delka] > 0 then Write ( PocetSlov[Delka], 'x slovo délky ', Delka, ', ' ); end. 9.3.5 program
ObraceniTextu; var Slovo, MaxSlovo : string; Znak : Char; I: Integer; begin Write ( 'Obracení zadaného textu - napiš slovo a já ti řeknu jak je opačně '); Write ( 'Vstup ukonči znakem ''@''. '); Slovo := ''; MaxSlovo := ''; Read ( Znak ); while Znak <> Konec do begin case Znak of 'A'..'Z', 'a'..'z' : Slovo := Slovo + Znak; else begin for I := Lenght (Slovo) downto 1 do write (Slovo[I]); write (Znak); end; {konec beginu} end; {konec case!!!} Read ( Znak ); end; for I := Lenght (Slovo) downto 1 do write (Slovo[I]); write (Znak); end. 12.2.4 Přepona function Prepona : Real; begin Prepona := Sqrt (A*A + B*B); end; 12.6 Fibonacci function Fibonacci1 ( N : Integer ) : Integer; begin if N < 0 then Fibonacci1 := 0 else if N <= 1 then Fibonacci1 := 1 else Fibonacci1 := Fibonacci1(N-1) + Fibonacci1(N-2); end;
function Fibonacci2 ( N : Integer ) : Integer; var Novy, Minuly, Predminuly, I : Integer; begin if N < 0 then Fibonacci2 := 0 else begin Minuly := 1; Predminuly := 0; for I := 1 to N do begin Novy := Minuly + Predminuly; Predminuly := Minuly; Minuly := Novy; end; Fibonacci2 := Minuly; end; end;
Fibonacci 1 by měla být katastrofálně neefektivní (=pomalý). 13.6 Typ množina program VsechnaPismena; const Konec = '@'; type MnozinaZnaku = set of Char; var Znak : Char; BylyTam : MnozinaZnaku;
procedure Inicializace; begin Writeln ( 'Test přítomnosti malých písmen.' ); Writeln ( 'Vstup ukončete znakem "', Konec, '"' ); BylyTam := []; end;
procedure ZpracujText; begin Read ( Znak ); while Znak <> Konec do begin if Znak in ['a'..'z'] then BylyTam := BylyTam + [Znak]; Read ( Znak ); end; end;
procedure PisVysledek; begin Write ( 'Vstupní text ' ); if BylyTam = ['a'..'z'] then Write ( 'obsahoval' ) else Write ( 'neobsahoval' ); Writeln ( ' všechna malá písmena.' ); end;
begin Inicializace; ZpracujText; PisVysledek; end. 13.7 Typ množina program VsechnaPismena; const Konec = '@'; type MnozinaZnaku = set of Char; var Znak : Char; BylyTam : MnozinaZnaku;
procedure Inicializace; begin Writeln ( 'Test přítomnosti malých písmen.' ); Writeln ( 'Vstup ukončete znakem "', Konec, '"' ); BylyTam := []; end;
procedure ZpracujText; begin Read ( Znak ); while Znak <> Konec do begin if Znak in ['a'..'z'] then BylyTam := BylyTam + [Znak]; Read ( Znak ); end; end;
procedure PisVysledek; var C : Char; begin if BylyTam = ['a'..'z'] then Writeln ( 'text obsahoval všechna malá písmena' ) else begin Write ( 'text neobsahoval' ); for C := 'a' to 'z' do if not ( C in BylyTam ) then write ( C:2 ); writeln; end; end;
begin Inicializace; ZpracujText; PisVysledek; end Poznámky
© 2001 Milan Volejník, http://hledej.to.zde.cz aktualizace: 17.09.2002 17:25:35 Powered by Notepad editor.
|