|
Posledná zmena: 14.10.2002
|
záznamy
|
Typ Záznam
komplexné číslo
|
pre typ komplexné číslo vytvorte tieto funkcie:
- vytvorenie komplexného čísla
- parametrami sú dve čísla, výstup
je komplexné číslo
- absolútna honota
- súčet, rozdiel, súčin,
podiel
|
type
komplex = record r,i:real end;
function k(r,i:real):komplex;
begin
Result.r:=r; Result.i:=i;
end;
function absK(a:komplex):real;
begin
Result:=sqrt(sqr(a.r)+sqr(a.i));
end;
function sucet(a,b:komplex):komplex;
begin
Result.r:=a.r+b.r;
Result.i:=a.i+b.i;
end;
function rozdiel(a,b:komplex):komplex;
begin
Result:=k(a.r-b.r,a.i-b.i);
end;
function sucin(a,b:komplex):komplex;
begin
Result.r:=a.r*b.r-a.i*b.i;
Result.i:=a.r*b.i+a.i*b.r;
end;
|
komplexné číslo ako
string
|
pre typ komplexné číslo vytvorte funkciu KomplexToStr
|
function KomplexToStr(a:komplex):string;
begin
Result:='';
if a.r<>0 then
Result:=FloatToSTr(a.r);
if a.i<>0 then begin
if a.i=-1 then Result:=Result+'-i'
else if a.i<0 then
Result:=Result+FloatToSTr(a.i)+'i'
else begin
if Result<>'' then Result:=Result+'+';
if a.i=1 then Result:=Result+'i'
else Result:=Result+FloatToSTr(a.i)+'i';
end;
end;
if Result='' then Result:='0';
end;
|
frekvenčná tabuľka krsných mien
- v textovom súbore (má maximálne 1000 riadkov) je v každom riadku
jedno priezvisko a meno študenta; zistite, koľkokrát sa vyskytli jednotlivé
krstné mená; (riadky čítajte ako string)
- úlohu riešte v neusporiadanej tabuľke mien
deklarácie
|
definujte pole záznamov, ktoré obsahujú meno a počet výskytov
|
const
max=1000;
type
zaznam = record
meno:string;
kolko:integer;
end;
var
pole:array [1..max] of zaznam;
n:integer; // počet mien v tabuľke
|
hľadaj
|
definujte funkciu hľadania v neutriedenom poli
|
function hladaj(m:string):integer;
begin
Result:=n;
while (Result>0) and (pole[Result].meno<>m) do
dec(Result);
end;
|
zaraď
|
procedúra zaradí ďalšie meno do tabuľky
|
procedure zarad(m:string);
var
i:integer;
begin
i:=hladaj(m);
if i=0 then begin
inc(n);
pole[n].meno:=m;
pole[n].kolko:=1;
end
else
inc(pole[i].kolko);
end;
|
prečítanie a výpis
tabuľky
|
procedúry, ktoré čítajú textový súbor
'student.txt', zaradia všetky mená
do tabuľky a na záver ju vypíšu
|
procedure citaj(subor:string);
var
t:TextFile;
s:string;
begin
n:=0;
AssignFile(t,subor); Reset(t);
while not seekeof(t) do begin
readln(t,s);
zarad(copy(s,pos(' ',s)+1,maxint));
end;
CloseFile(t);
end;
procedure vypis;
var
i:integer;
begin
for i:=1 to n do
Memo1.Lines.Add(pole[i].meno+' '+
IntToStr(pole[i].kolko));
end;
|
Ďalšie úlohy
- vylepšená verzia: utriedená tabuľka, pri zaraďovaní binárne
vyhľadávanie
|
© 2002 AB, KVI blaho@fmph.uniba.sk
|