Занятие 4-5. Примеры задач, решаемых с помощью списка. Решение задач.

 

Задание. Просмотрите предложенные решения задач и приготовьтесь объяснить алгоритм их решения учителю. Если необходимо, то наберите программы на компьютере и просмотрите их действие.

 

Задача 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.

 








Дата добавления: 2015-05-16; просмотров: 641;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.011 сек.