Задание. Просмотрите предложенные решения задач и приготовьтесь объяснить алгоритм их решения учителю. Если необходимо, то наберите программы на компьютере и просмотрите их действие.
Задача 1. Проверить есть ли и сколько раз встречается список М1 в списке М2.
Program BaranovA;
Uses
Crt;
Type
EXS = ^ S;
S = Record
Data: integer;
Next: EXS;
End;
Var
u, x, m1, m2: EXS;
i, Kol: integer;
Procedure Poisk(Var x1, x2: EXS);
Var
m3, m4: EXS;
Begin
Kol:= 0;
m3:= m1;
m4:= m2;
while m4 <> Nil do
begin
if m4^.Data = m3^.Data
then
begin
m3:= m3^.Next;
m4:= m4^.Next;
if m3 = Nil
then
begin
Kol:= Kol+1;
m3:= m1;
end;
end;
else
begin
m3:= m1;
m4:= m4^.Next;
end;
end;
End;
Procedure Init (Var u: EXS);
Var
y: EXS;
Digit: integer;
Begin
writeln('Введите список. Конец ввода – 0');
u:= Nil;
read(Digit);
while Digit <> 0 do
begin
new(y);
y^.Next:= Nil;
y^.Data:= Digit;
if u = Nil
then
u:= y
else
x^.Next:= y;
x:= y;
read(Digit);
end;
writeln;
End;
Procedure Print(X: EXS);
Begin
while X <> Nil do
begin
write(X^.Data: 5);
X:= X^.Next;
end;
readln;
writeln;
End;
Begin
ClrScr;
Init(m1);
Init(m2);
writeln('***Список 1***');
Print(m1);
writeln('***Список 2***');
Print(m2);
Poisk(m1, m2);
writeln('Список 1 встречается в списке 2 ', Kol, ' раз(а)');
readln;
End.
Задача 2. Из текстового файла, состоящего из строк, сформировать список, запросить слово и удалить это слово из списка.
Program;
Uses
Crt;
Type
EXS = ^ Spisok;
Spisok = record
Data: string;
Next: EXS;
end;
Var
Golova _ Spiska, Golova _ Spiska _ Udalen_: EXS;
F: text;
S, St: string;
Procedure Smotr(x: EXS);
Begin
TextColor(LightRed);
write('Ваш список...');
while x <> Nil do
begin
writeln (x^.Data,' ');
x:= x^.Next;
end;
End;
Procedure reading;
Begin
reset (F);
writeln('Ваш файл...');
while no Eof(F) do
begin
readln (F, St);
writeln (St);
end;
close (F);
End;
Procedure CreateFile;
Begin
writeln('Создание файла');
write('Введите имя файла...');
readln(S);
assign (F, S);
rewrite('Вводите текст в файл (окончание ввода - <Enter>');
repeat
readln(St);
writeln (F, St);
until St = '';
write('Файл создан');
close (F);
readln;
End;
Procedure Proverka;
Var
x, y, u: EXS;
i: integer;
Begin
reset (F);
while not Eof (F) do
begin
readln (F, St[i]);
while i < Length (St) do
begin
new (x);
x^.Next:= Nil;
if (St[i] <> '') or (St[i] <> St[Length(St)])
then
x^.Data:= x^.Data + St[i];
if u = Nil
then
u:= x
else
y^.Next:= x;
y:= x;
end;
end;
close (F);
Smotr (u);
End;
Begin
ClrScr;
TextColor (White);
CreateFile;
Proverka;
End.