Pascaler
О проекте Теоретический материал Тестирование Архив задач
Войти в личный кабинет



О проекте


Преподавателям


Тема: Примеры задач, решаемых с помощью списка. Решение задач.

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

Задача 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. Написать программу, содержащую процедуру, которая меняет местами первый и пятый элементы непустого списка. Если элементы не найдены, то выдать на экран соответствующие сообщение.


  3. Написать программу, содержащую процедуру, которая меняет местами первый и последний элементы непустого списка. Если элементы не найдены, то выдать на экран соответствующие сообщение.


  4. Написать программу, содержащую процедуру, которая вставляет новый элемент перед каждым вхождением заданного элемента. Если элементы не найдены, то выдать на экран соответствующие сообщение.


  5. Написать программу, содержащую процедуру, которая вставляет новый элемент за каждым вхождением заданного элемента. Если элементы не найдены, то выдать на экран соответствующие сообщение.


  6. Написать программу, содержащую подпрограмму, которая проверяет на равенство списки М1 и М2.


  7. Написать программу, содержащую функцию, которая определяет, входит ли список М1 в список М2. Предполагается, что списки существуют.


  8. Написать программу, содержащую подпрограмму, которая копирует в конец непустого списка М его первый элемент. Если элементы не найдены, то выдать на экран соответствующие сообщение.


  9. Написать программу, содержащую подпрограмму, которая копирует в начало непустого списка М его последний элемент. Если элементы не найдены, то выдать на экран соответствующие сообщение.


  10. Написать программу, содержащую процедуру, которая копирует в список М за каждым вхождением заданного элемента все элемента списка М1.


  11. Написать программу, содержащую процедуру, которая объединяет два упорядоченных по неубыванию списка М1 и М2 в один упорядоченный по неубыванию список, построив новый список М.


  12. Написать программу, содержащую процедуру, которая объединяет два упорядоченных по неубыванию списка М1 и М2 в один упорядоченный по неубыванию список, сменив соответствующим образом ссылки в М1 и М2.


  13. Написать программу, содержащую функцию, которая проверяет, упорядочены ли элементы списка по алфавиту.


  14. Напишите программу сортировки существующего списка по алфавиту. В программе используйте подпрограммы.


  15. Напишите программу, которая создавала бы файл целых чисел, а затем формировала список целых чисел файла. Создайте в конце списка элемент, содержащий сумму всех чисел файла. В программе используйте подпрограммы.


  16. Напишите программу, которая создавала бы файл целых чисел, а затем формировала список целых чисел файла. Создайте список чисел, являющихся суммой соседних элементов. В программе используйте подпрограммы.


  17. Напишите программу, которая создавала бы текстовый файл, а затем формировала список строк файла. Создайте список обратных строк. В программе используйте подпрограммы.


  18. Напишите программу, которая создавала бы текстовый файл, а затем формировала список строк файла. Создайте отсортированный список строк. В программе используйте подпрограммы.


  19. Напишите программу, которая создавала бы файл комбинированного типа, а затем формировала список, используя какое-либо поле записи. Создайте отсортированный список. В программе используйте подпрограммы.


  20. Напишите программу, которая создавала бы файл комбинированного типа, а затем формировала список элементов файла. Создайте отсортированный по какому-либо полю список. В программе используйте подпрограммы.
Вернуться назад
2003—2012 © Группа «Vimedia»
Проект «Pascaler» — лучший на ХI Всероссийской конференции молодых исследователей с международным участием «Шаг в будущее», Россия, Москва, 12 – 16 апреля 2004г.