О проекте
|
Тема: Примеры задач, решаемых с помощью списка. Решение задач.Задание. Просмотрите предложенные решения задач и приготовьтесь объяснить алгоритм их решения учителю. Если необходимо, то наберите программы на компьютере и просмотрите их действие. Задача 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. |
Выберите с учителем задачи для самостоятельного решения.- Написать программу, содержащую процедуру, которая меняет местами первый и второй элементы непустого списка. Если элементы не найдены, то выдать на экран соответствующие сообщение.
- Написать программу, содержащую процедуру, которая меняет местами первый и пятый элементы непустого списка. Если элементы не найдены, то выдать на экран соответствующие сообщение.
- Написать программу, содержащую процедуру, которая меняет местами первый и последний элементы непустого списка. Если элементы не найдены, то выдать на экран соответствующие сообщение.
- Написать программу, содержащую процедуру, которая вставляет новый элемент перед каждым вхождением заданного элемента. Если элементы не найдены, то выдать на экран соответствующие сообщение.
- Написать программу, содержащую процедуру, которая вставляет новый элемент за каждым вхождением заданного элемента. Если элементы не найдены, то выдать на экран соответствующие сообщение.
- Написать программу, содержащую подпрограмму, которая проверяет на равенство списки М1 и М2.
- Написать программу, содержащую функцию, которая определяет, входит ли список М1 в список М2. Предполагается, что списки существуют.
- Написать программу, содержащую подпрограмму, которая копирует в конец непустого списка М его первый элемент. Если элементы не найдены, то выдать на экран соответствующие сообщение.
- Написать программу, содержащую подпрограмму, которая копирует в начало непустого списка М его последний элемент. Если элементы не найдены, то выдать на экран соответствующие сообщение.
- Написать программу, содержащую процедуру, которая копирует в список М за каждым вхождением заданного элемента все элемента списка М1.
- Написать программу, содержащую процедуру, которая объединяет два упорядоченных по неубыванию списка М1 и М2 в один упорядоченный по неубыванию список, построив новый список М.
- Написать программу, содержащую процедуру, которая объединяет два упорядоченных по неубыванию списка М1 и М2 в один упорядоченный по неубыванию список, сменив соответствующим образом ссылки в М1 и М2.
- Написать программу, содержащую функцию, которая проверяет, упорядочены ли элементы списка по алфавиту.
- Напишите программу сортировки существующего списка по алфавиту. В программе используйте подпрограммы.
- Напишите программу, которая создавала бы файл целых чисел, а затем формировала список целых чисел файла. Создайте в конце списка элемент, содержащий сумму всех чисел файла. В программе используйте подпрограммы.
- Напишите программу, которая создавала бы файл целых чисел, а затем формировала список целых чисел файла. Создайте список чисел, являющихся суммой соседних элементов. В программе используйте подпрограммы.
- Напишите программу, которая создавала бы текстовый файл, а затем формировала список строк файла. Создайте список обратных строк. В программе используйте подпрограммы.
- Напишите программу, которая создавала бы текстовый файл, а затем формировала список строк файла. Создайте отсортированный список строк. В программе используйте подпрограммы.
- Напишите программу, которая создавала бы файл комбинированного типа, а затем формировала список, используя какое-либо поле записи. Создайте отсортированный список. В программе используйте подпрограммы.
- Напишите программу, которая создавала бы файл комбинированного типа, а затем формировала список элементов файла. Создайте отсортированный по какому-либо полю список. В программе используйте подпрограммы.
|