Задание. Просмотрите предложенные решения задач и приготовьтесь объяснить алгоритм их решения учителю. Если необходимо, то наберите программы на компьютере и просмотрите их действие.
Задача 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);
Reading;
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.