ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Занятие 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.
Не нашли, что искали? Воспользуйтесь поиском:
|