Witam, napisałem program który za za zadanie wykonać kilka rzeczy.
Pierwszy problem pojawia się w funkcji "tekst" ponieważ funkcja zwraca mi tylko pierwszą podaną w tablicy literę a ma zwracać tekst utworzony z podanych liter. Poniżej kod.
Drugi problem. Mam za zadanie napisać procedura(arg.tablica,element,pozycja) wyszukująca najmniejszy element i jego pozycję. Całkowicie nie rozumiem jak to niby ma się odbywać i co przykładowo ma być tym najmniejszym elementem?
program Project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
type tablica = array [1..10] of char;
function duze (t:tablica) : byte;
var
i:integer;
ilosc:byte;
begin
ilosc:=0;
for i:=1 to 10 do
begin
if (t[i] >= 'A') and (t[i] <='Z') then
inc(ilosc);
end;
result:=ilosc
end;
function suma (t:tablica) : integer;
var
i:integer;
tabl:array [1..10] of integer;
ilosc:byte;
sum:integer;
begin
ilosc:=0;
for i:=1 to 10 do
begin
if (t[i]>='0') and (t[i]<='9') then
begin
inc(ilosc);
tabl[ilosc]:= ord(t[i])-48;
end;
end;
sum:=0;
for i:=1 to ilosc do
begin
sum:=sum+tabl[i];
end;
result:=sum;
end;
function tekst (t:tablica):string;
var
s:string;
i:byte;
ilosc:byte;
begin
ilosc:=0;
s:=' ';
for i:=1 to 10 do
begin
if (t[i] in ['A'..'Z']) or (t[i] in ['a'..'z']) then
begin
inc(ilosc);
s[ilosc]:=t[i];
end;
end;
result:=s;
end;
var //main
tab:tablica;
i:byte;
f_in:Text;
begin
for i:=1 to 10 do
begin
write('podaj ',i,' element tablicy ');
readln(tab[i]);
end;
for i:=1 to 10 do
begin
writeln(i,' element tablicy wynosi ',tab[i]);
end;
writeln('Ilosc duzych liter wynosi',duze(tab));
writeln('Suma podanych liczb= ', suma(tab));
writeln('Tekst z liter to: ', tekst(tab));
assign(f_in, 'c:/onp/plik.txt');
reset(f_in);
for i:=1 to 10 do
begin
read(f_in, tab[i]);
if (tab[i] <> ' ') and (tab[i] <> '.') then writeln(tab[i])
end;
close(f_in);
readln;
end.