Примеры решения задач. Задание. Рассмотрите приведенные примеры задач
Задание. Рассмотрите приведенные примеры задач. Наберите программы на компьютере, дополните их комментарием и протестируйте их. Имейте в виду, что уже рассмотренные выше подпрограммы в текстах задач пропущены. Будьте готовы объяснить учителю алгоритмы решения задач и продемонстрировать их графически.
Пример 1. За один просмотр файла действительных чисел и с использованием очереди напечатать элементы файла в следующем порядке: сначала – все числа, меньшие а, затем – все числа из отрезка [а, b], и наконец – все остальные числа, сохраняя исходный порядок в каждой из этих трех групп чисел. Числа а и b задает пользователь.
Program MordovskihK;
Type
EXO = ^O;
O = record
Data : integer;
Next : EXO;
End;
Var
i : Real;
Min, Vibr, Other, EndMin, EndVibr, EndOther : EXO;
f : File of real;
Stroka : string;
Procedure writeO(Var BeginO, EndO : EXO; c : real);
. . .
Procedure PrintO(u : EXO);
. . .
Begin
Min := Nil;
Vibr := Nil;
Other := Nil;
EndMin := Nil;
EndVibr := Nil;
EndOther := Nil;
writeln ('Введите имя файла >');
readln(Stroka);
writeln ('Введите промежуток >');
readln(a, b);
assign(f, Stroka);
reset(f);
while not Eof(f) do
begin
read(f, i);
if i<a
then
writeO(Min, x, i)
else
if (i>=a) and (i<=b)
then
writeO(Vibr, x, i)
else
writeO(Other, x, i)
end;
close(f);
writeln('Числа, меньшие ', а);
Print(Min);
writeln('Числа из промежутка [', а, b, ']');
Print(Vibr);
writeln('Числа, большие ', b);
Print(Other);
End.
Пример 2. Из заданного текста перенести все цифры в конец каждой строки, сохранив их порядок.
Program BaranovA;
Type
EXO = ^O;
O = record
Data : integer;
Next : EXO;
End;
Var
i : integer;
O1, EndO1, O2, EndO2 : EXO;
f1, f2 : text;
Name, NewName, Stroka, NewStroka : string;
Procedure writeO(Var BeginO, EndO : EXO; k : char);
. . .
Procedure readO(u : EXO);
. . .
ModifStr(St : string, NewSt : string);
Var
l : char;
O1 := Nil;
EndO1 := Nil;
O2 := Nil;
EndO2 := Nil;
NewSt := '';
for i := 1 to Length(St) do
if St[i] in ['1', '2', '3', '4', '5', '6', '7', '8', '8', '9', '0']
then
writeO(O2, EndO2, St[i])
else
writeO(O1, EndO1, St[i]);
while O1 <> Nil do
begin
readO(O1, EndO1, l);
NewSt := NewSt + l;
end;
while O2 <> Nil do
begin
readO(O2, EndO2, l);
NewSt := NewSt + l;
end;
End;
Begin
write('Введите имя исходного файла: ');
readln(Name);
write('Введите имя файла-результата: ');
readln(NewName);
assign(f1, Name);
assign(f2, NewName);
reset(f1);
rewrite(f2);
while not Eof(f1) do
begin
readln(f1, Stroka);
ModifStr(Stroka, NewStroka);
writeln(f2, NewStroka);
end;
close(f1);
close(f2);
End.
Дата добавления: 2015-05-16; просмотров: 907;