
- •Основы программирования на языке паскаль
- •1. Простейшие программы Структура Паскаль-программы
- •Данные и тип данных
- •Стандартные функции
- •Выражения
- •Организация простейших программ
- •Модуль crt
- •Задания для самостоятельной работы
- •2. Ветвления
- •Задания для самостоятельной работы
- •3. Циклы
- •Оператор цикла с постусловием используется, когда известно условие, при котором цикл будет прекращать свою. Формат оператора:
- •Задания для самостоятельной работы
- •4. Массивы
- •Сортировка
- •Задания для самостоятельной работы
- •5. Строки
- •Задания для самостоятельной работы
- •6. Процедуры и функции
- •Параметры
- •Локальные и глобальные переменные
- •Функции
- •Задания для самостоятельной работы
- •7. Записи
- •Задания для самостоятельной работы
- •8. Множества
- •Операции над множествами
- •Задания для самостоятельной работы
- •9. Файлы
- •Стандартные процедуры и функции для работы с файлами всех типов
- •Стандартные процедуры и функции для работы с типизированными файлами
- •Задания для самостоятельной работы
- •10. Модуль graph
- •Процедуры и функции модуля graph
- •Задания для самостоятельной работы
- •11. Модули, определяемые пользователем
- •Задания для самостоятельной работы
- •12. Линейные однонаправленные списки Указатели
- •Линейные однонаправленные списки
- •Задания для самостоятельной работы
- •13. Двунаправленные списки.
- •Задания для самостоятельной работы
- •14. Кольцевые списки
- •Задания для самостоятельной работы
- •15. Стеки и очереди
- •Задания для самостоятельной работы
- •16. Деревья
- •Задания для самостоятельной работы
- •Простейшие программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
- •Бадмаева Энгельсина Сергеевна, Тонхоноева Антонида Антоновна
- •670000, Г. Улан-Удэ, ул. Смолина, 24-а.
14. Кольцевые списки
Любой из ранее рассмотренных списков можно преобразовать в кольцевой список. Динамическая структура данных, в которой каждый элемент имеет ссылку на следующий элемент, называется кольцевым однонаправленным списком, а в котором каждый элемент снабжается ссылками на предыдущий и следующий элементы, - кольцевым двунаправ-ленным списком.
Пример 24. (“Считалка”): N ребят располагаются по кругу. Начав отсчет от первого, удаляют каждого K-го, смыкая круг после каждого удаления. Определить порядок удаления ребят из круга и напечатать номер оставшегося в круге.
Program Example_24;
Type Ss=^ Igrok;
Igrok=Record
number : Byte; next :Ss
End;
Var q, first, ocher : Ss; N, K, i, j: Byte;
Begin
Readln (N,K);
{заносим в круг первого игрока}
New (first); first^.number:=1; ocher:=first;
{по порядку достраиваем в цепочку остальных, ocher - ссылка на последнего}
For i:=2 to N do
Begin
New(q); q^.number:=i;
ocher^.next:=q; ocher:=q
End;
{замыкаем круг}
ocher^.next:=first;
{повторим считалку N-1 раз}
For i:=1 to N-1 do
Begin
{отсчитываем очередного кандидата на удаление}
For j:=1 to K-1 do
ocher:=ocher^.next;
{удаляем элемент, следующий за очередным}
q:=ocher^.next;
writeln(‘Из круга выходит игрок под номером ’,q^.number);
ocher^.next:=q^.next; Dispose (q)
End;
Writeln(‘В круге остался игрок по номером ’, ocher^.number)
End.
Задания для самостоятельной работы
Составить программы для решения следующих задач, выбрав для представления данных подходящую списковую структуру (однонаправленный, двунаправленный, кольцевой список).
Варианты заданий:
Дана непустая последовательность слов, в каждом из которых от 1 до 8 строчных латинских букв, между соседними словами – пробел, за последним словом – точка. Напечатать все слова с наибольшей длиной.
Дана непустая последовательность слов, в каждом из которых от 1 до 8 строчных латинских букв, между соседними словами – пробел, за последним словом – точка. Напечатать все различные слова по алфавиту, указав для каждого из них число его вхождений в эту последовательность.
Дана непустая последовательность слов, в каждом из которых от 1 до 8 строчных латинских букв, между соседними словами – пробел, за последним словом – точка. Напе-чатать эти слова в следующем порядке: сначала по алфавиту все слова из одной буквы, затем по алфавиту все двухбуквенные слова и т.д. (Одинаковые слова печатать по одному разу.)
Дано натуральное число N. Напечатать все цифры десятичной записи числа N!
Дана матрица из целых чисел размера NхM. Определить, имеется ли в матрице хотя бы один столбец, состоящий из четных элементов. Выдать его номер либо сообщить об отсутствии таковых.
Дана последовательность целых чисел. Определить, можно ли из нее получить возрастающую последовательность путем печати ее элементов, начиная с любого, по часовой стрелке или против по кругу. Например, из последовательности 8, 9, 3, 6, 7 можно получить возрастающую последовательность: 3, 6, 7, 8, 9.
Дана матрица из целых чисел размера NxM. Удалить из матрицы все строки, состоящие из нулевых элементов.
Дана последовательность, содержащая не менее двух различных натуральных чисел, за которой следует ноль. Переставить местами элементы с наибольшим и с наименьшим значениями.
Дана последовательность целых чисел. Определить, можно ли из нее путем удаления одного элемента получить возрастающую последовательность. Напечатать найденную последовательность либо сообщить об отсутствии таковой. Например, из последовательности 1, 3, 2, 5, 8 можно получить требуемую последовательность, удалив 2: 1, 3, 5, 8.
Дана матрица из целых чисел размера NxM, все элементы которой различны. Поменять местами строки, содержащие максимальный и минимальный элементы матрицы.
Дана последовательность, содержащая не менее двух различных натуральных чисел, за которой следует ноль. Если минимальный элемент встречается раньше максимального, то напечатать числа, находящиеся между ними, в порядке следования, иначе напечатать их в обратном порядке.
Дана последовательность, содержащая не менее двух различных натуральных чисел, за которой следует ноль. Упорядочить элементы, находящиеся между элементами с наибольшим и с наименьшим значениями, по возрастанию, если минимальный элемент встречается раньше максимального, или по убыванию, если минимальный находится за максимальным.
Дан текст, оканчивающийся точкой. Среди символов текста особую роль играет знак #, появление которого в тексте означает отмену предыдущего символа текста; K знаков # подряд отменяют K предыдущих символов (если такие есть). Напечатать данный текст, исправленный с учетом такой роли знака #. Например, текст XW#E##HELO#LO должен быть напечатан в виде HELLO.
Дана запись многочлена (от переменной х) произвольной степени с целыми коэффициентами, причем его одночлены могут быть и не упорядочены по степеням х, а одночлены одной и той же степени могут повторяться. Например, дан многочлен –8x^4-74x+8x^4+5x-x^3. Требуется привести подобные члены в данном многочлене, после чего распечатать его по убыванию степеней х.
Дано целое N>2. Напечатать коэффициенты N-го многочлена Чебышева
, определяемого формулами: