procedure TfrmMain.FindFilesOnDisk(Dir : string);
var SR : TSearchRec;
Err : integer;
i, j : integer;
st : string;
begin
if (Dir[Length(Dir)] <> '\') then Dir := Dir + '\';
Err := FindFirst(Dir + '*.*', faAnyFile, SR);
while Err = 0 do
j := 0;
st := AnsiUpperCase(SR.Name);
if lbDirs.Items.Count > 0 then //Если в списке есть каталоги
//Проверить, нет ли среди них
for i := 0 to lbDirs.Items.Count - 1 do
if lbDirs.Items[i] = st then //найденного
j := 1;
break;
end; //if lbDirs.Items[i] = st then
if j = 0 then
if (SR.Name <> '.') and
(SR.Name <> '..') and
((SR.Attr and faDirectory) <> 0) then
inc(NumDir);
DirList.Add(Dir + st);
frmMain.sbMain.Panels[1].Text := IntToStr(NumDir);
pbFind.Position := NumDir;
Application.ProcessMessages;
FindFilesOnDisk(Dir + SR.Name);
end; //if (SR.Name <> '.') and
end; //if j = 0 then
Err := FindNext(SR);
end;
Объяснение:
//Задача #1
var a,b,c: integer;
write('Введите ваш возраст: '); readln(a);
write('Введите время, проведенное за компьютером (в минутах): '); readln(b);
if b<0 then else
case a of
6..8: c:=15;
9..11: c:=30;
12..15: c:=45;
16..17: c:=60;
else write('Вам ',(a<6)? 'меньше 6':'больше 17-ти',' лет'); exit;
write((c-b>0)? 'Вам осталось находиться за компьютером '+(c-b).ToString+' минут':'Ваш сеанс закончился '+abs(c-b)+' минут назад');
end.
//Задача 2
var
a:integer;
b:real;
var N: array [1..4] of (string,real);
N[1]:=('АИ-92',42.30);
N[2]:=('АИ-95',45.30);
N[3]:=('АИ-98',53.71);
writeln('В наличии имеется: ');
for var L:=1 to 3 do
println(L+') ',N[L].Item1,' ',N[L].Item2,' руб/л');
write('Введите номер марки бензина (1-3): ');readln(a);
if (a>=1) and (a<=3) then begin
writeln('Вы выбрали бензин ',N[a].Item1);
write('Введите количество литров: ');readln(b);
write((B<0)? 'Указано отрицательное количество литров':('Сумма вашей покупки: '+N[a].Item2*b+' рублей'))
//Задача 4
var K:char;
var N: array ['A'..'D'] of real;
for var L:='A' to 'D' do
write('Введите расстояние до города ',L,' (км): ');readln(N[L]);
write('В какой из городов вы направляетесь? ');readln(K);
K:=K.ToUpper;
write('Вам понадобится ',(N[K]/100)*9,' литров бензина');
Примечание:
У задачи №3 слишком мало вводных параметров
procedure TfrmMain.FindFilesOnDisk(Dir : string);
var SR : TSearchRec;
Err : integer;
i, j : integer;
st : string;
begin
if (Dir[Length(Dir)] <> '\') then Dir := Dir + '\';
Err := FindFirst(Dir + '*.*', faAnyFile, SR);
while Err = 0 do
begin
j := 0;
st := AnsiUpperCase(SR.Name);
if lbDirs.Items.Count > 0 then //Если в списке есть каталоги
//Проверить, нет ли среди них
for i := 0 to lbDirs.Items.Count - 1 do
if lbDirs.Items[i] = st then //найденного
begin
j := 1;
break;
end; //if lbDirs.Items[i] = st then
if j = 0 then
begin
if (SR.Name <> '.') and
(SR.Name <> '..') and
((SR.Attr and faDirectory) <> 0) then
begin
inc(NumDir);
DirList.Add(Dir + st);
frmMain.sbMain.Panels[1].Text := IntToStr(NumDir);
pbFind.Position := NumDir;
Application.ProcessMessages;
FindFilesOnDisk(Dir + SR.Name);
end; //if (SR.Name <> '.') and
end; //if j = 0 then
Err := FindNext(SR);
end;
end;
Объяснение:
//Задача #1
begin
var a,b,c: integer;
write('Введите ваш возраст: '); readln(a);
write('Введите время, проведенное за компьютером (в минутах): '); readln(b);
if b<0 then else
case a of
6..8: c:=15;
9..11: c:=30;
12..15: c:=45;
16..17: c:=60;
else write('Вам ',(a<6)? 'меньше 6':'больше 17-ти',' лет'); exit;
end;
write((c-b>0)? 'Вам осталось находиться за компьютером '+(c-b).ToString+' минут':'Ваш сеанс закончился '+abs(c-b)+' минут назад');
end.
//Задача 2
var
a:integer;
b:real;
begin
var N: array [1..4] of (string,real);
N[1]:=('АИ-92',42.30);
N[2]:=('АИ-95',45.30);
N[3]:=('АИ-98',53.71);
writeln('В наличии имеется: ');
for var L:=1 to 3 do
println(L+') ',N[L].Item1,' ',N[L].Item2,' руб/л');
write('Введите номер марки бензина (1-3): ');readln(a);
if (a>=1) and (a<=3) then begin
writeln('Вы выбрали бензин ',N[a].Item1);
write('Введите количество литров: ');readln(b);
write((B<0)? 'Указано отрицательное количество литров':('Сумма вашей покупки: '+N[a].Item2*b+' рублей'))
end;
end.
//Задача 4
begin
var K:char;
var N: array ['A'..'D'] of real;
for var L:='A' to 'D' do
begin
write('Введите расстояние до города ',L,' (км): ');readln(N[L]);
end;
write('В какой из городов вы направляетесь? ');readln(K);
K:=K.ToUpper;
write('Вам понадобится ',(N[K]/100)*9,' литров бензина');
end.
Примечание:
У задачи №3 слишком мало вводных параметров