"Объектно-ориентированное программирование"
Требования к выполненной работе:
- результат выполнения представить в следующем виде: текст отлаженной программы с подробным комментарием, инструкция по использованию программы,
- основные подпрограммы оформить в виде отдельного модуля,
- все задачи должны быть решены с использованием структур.
1. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а) или с заглавным звеном (рис. б) при следующем их описании
Параметр L обозначает список, а параметры Е, Е1 — данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство. {ТЭ = double}
Определить рекурсивные функции, которые:
а) удаляет из списка L все вхождения элемента Е;
б) строит L1—копию списка L;
в) удваивает каждое вхождение элемента Е в список L;
г) оставляет в списке L только первые вхождения одинаковых элементов.
д) выводит результат в отдельный файл.
2. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а) или с заглавным звеном (рис. б) при следующем их описании
Параметр L обозначает список, а параметры Е, Е1 — данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство. {ТЭ = double}
Определить функции, которые формируют список L, включив в него по одному разу элементы, которые:
а) входят хотя бы в один из списков L1 и L2;
б) входят одновременно в оба списка L1 и L2;
в) входят в список L1, но не входят в список L2;
г) входят в один из списков L1 и L2, но в то же время не входят в другой из них.
д) выводит список L в отдельный файл.
3. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а) или с заглавным звеном (рис. б) при следующем их описании
Параметр L обозначает список, а параметры Е, Е1 — данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство. {ТЭ = double}
Определить функции, которые объединяют два упорядоченных по неубыванию списка L1 и L2 (ТЭ=double) в один упорядоченный по неубыванию список;
а) построив новый список L;
б) меняя соответствующим образом ссылки в L1 и L2 и присвоив полученный список параметру L1.
в) результат записывается в отдельный файл.
4. Параметр L обозначает список, а параметры Е, Е1 — данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство. Список имеет структуру
type
указатель=^цепочка
цепочка=record
буква: string;
связь: указатель;
end;
Определить функцию, которая:
а) в списке L переставляет местами первое и последнее непустые слова, если в L есть хотя бы два непустых слова;
б) печатает текст из первых букв всех непустых слов списка L
в) удаляет из непустых слов списка L их первые буквы;
г) печатает все непустые слова списка L;
д) определяет количество слов в непустом списке L, отличных от последнего.
e) выводит результат в отдельный файл.
5. Многочлен P(X)=An*Xn +An-1*Xn-1 + …+A1*X+A0
с целыми коэффициентами можно представить в виде списка (рис. 14 а), причем если Ai =0, то соответствующее звено
не включается в список (на рис. 14 б показано представление многочлена P(X)=52*X40 -3*X8+X).
Описать тип данных, соответствующий такому представлению многочленов, и определить следующие функции для работы с этими списками -многочленами
а) логическую функцию ровно(р,q) проверяющую на равенство многочлены р и q;
6) функцию знач(р,х), вычисляющую значение многочлена р в целочисленной точке х
в) процедуру диф(р,q) которая строит многочлен р — производную многочлена q;
г) процедуру слож(р,q,r), которая строит многочлен р — сумму многочленов q и r;
д) процедуру вывод(р,v), которая печатает многочлен р как многочлен от переменной, однобуквенное имя которой является значением литерного параметра и; (например, для указанного выше многочлена S процедура вывoд(s',y') должна напечатать 52y**40-3y**8+y);
е) процедуру ввод(р) которая считывает из входного файла безошибочную запись многочлена (за ней—пробел) и формирует соответствующий список-многочлен р.
6. Пусть L обозначает кольцевой (циклический) двунаправленный список с заглавным звеном (рис. 15) (с элементами E типа *char)
Определить функции, которые:
а) определяет, является ли список L пустым;
б) подсчитывает количество элементов списка L, у которых равные «соседи»;
в) определяет, есть ли в списке L хотя бы один элемент, который равен следующему за ним (по кругу) элементу;
г) в списке L переставляет в обратном порядке все элементы между первым и последним вхождениями элемента E, если E входит в L не менее двух раз;
д) выводит результат в отдельный файл.
7. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а) или с заглавным звеном (рис. б) при следующем их описании
Параметр L обозначает список, а параметры Е, Е1 — данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство. {ТЭ = char}
Определить функции, которые удаляют:
а) из непустого списка L первый элемент;
б) из списка L второй элемент, если такой есть;
в) из списка L за каждым вхождением элемента Е один элемент, если такой есть и он отличен от Е
г) из непустого списка L последний элемент;
д) выводит результат в отдельный текстовый файл.
8. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а) или с заглавным звеном (рис. б) при следующем их описании
Параметр L обозначает список, а параметры Е, Е1 — данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство. {ТЭ = integer}
Непустая последовательность натуральных чисел вводится с экрана, за которой следует 0. Определить функции, которые:
а) выводит числа в обратном порядке;
б) выводит порядковые номера тех чисел последовательности, которые имеют наибольшую величину;
в) сортирует числа в порядке их неубывания;
г) записывает результат в отдельный файл.
9. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а) или с заглавным звеном (рис. б) при следующем их описании
Параметр L обозначает список, а параметры Е, Е1 — данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство. {ТЭ = char}
Определить функцию, которая:
а) проверяет на равенство списки L1 и L2;
б) определяет, входит ли список L1 в список L2;
в) проверяет, есть ли в списке L1 (L2) хотя бы два одинаковых элемента;
г) переносит в конец непустого списка L1 (L2) его первый элемент;
д) выводит результат в отдельный файл.
10. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а) или с заглавным звеном (рис. б) при следующем их описании
Параметр L обозначает список, а параметры Е, Е1 — данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство. {ТЭ = char}
Определить функции, которые:
а) добавляет в конец списка L1 все элементы списка L2;
б) вставляет в список L1 за первым вхождением элемента Е все элементы списка L2, если Е входит в L1;
в) переворачивает список L1 (L2), т.е. изменяет ссылки в этом списке так, чтобы его элементы оказались расположенными в обратном порядке;
г) в списке L из каждой группы подряд идущих равных элементов оставляет только один;
д) выводит результат в отдельный файл.
11. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а) или с заглавным звеном (рис. б) при следующем их описании
Параметр L обозначает список, а параметры Е, Е1 — данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство. {ТЭ = double}
Определить рекурсивные функции, которые:
а) определяет, входит ли элемент Е в список L;
б) подсчитывает число вхождений элемента Е в список L;
в) находит максимальный элемент непустого списка L;
г) заменяет в списке L все вхождения E1 на E2;
д) выводит результат в отдельный файл.
12. Одно из возможных представлений “длинного” текста - это разделить его на участки (строки) и создать список (обозначить признак конца текста). Используя данное представление текста, определить функции:
а) число строк (T) для подсчета числа строк в тексте Т;
б) элем(Т,i,j,с), проверяющую, есть ли в тексте Т строка с номером i, и, если есть, присваивающую j-ю литеру этой строки параметру с;
в) перестановка (T,i,j), меняющую местами i-ю и j-ю строки текста Т;
г) з амена(Т, i, j), заменяющую i-ю строку текста Т на копию j-й строки.
д) вывод(Т), печатающую построчно текст Т;
е) ввод(Т), считывающую из входного файла последовательность литер до первой точки и формирующую из них текст Т (последнюю строку, если надо, дополнить пробелами).
13. Одно из возможных представлений “длинного” текста - это разделить его на участки (строки) и создать список (обозначить признак конца текста). Используя данное представление текста, определить функции:
а) добавить(Т,i,j), добавляющую после i-й строки текста Т копию j-й строки;
б) у далить(Т,j), удаляющую j-ю строку из текста Т;
в) поиск(Т, с, i, j), определяющую, входит ли литера с в текст Т, и, если входит, присваивающую параметрам i и / «координаты» первого вхождения этой литеры, i—номер строки, j —номер позиции в этой строке;
г) максимум(T,c) – номер строки с максимальным числом раз вхождения литеры с;
д) вывод(Т), печатающую построчно текст Т;
е) ввод(Т), считывающую из входного файла последовательность литер до первой точки и формирующую из них текст Т (последнюю строку, если надо, дополнить пробелами).
14. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а ) или с заглавным звеном (рис. б) при следующем их описании
type
ТЭ: double;
указ_на_звено=^звено;
звено=record
элем: ТЭ;
след: указ_на_звено;
end;
При этом параметры L, L1 и L2 обозначают списки, а параметры Е, Е1 и Е2—данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство.
Определить функции, которые:
а) определяет, является ли список L пустым;
б) находит среднее арифметическое элементов непустого списка L;
в) заменяет в списке L все вхождения E1 на Е2;
г) меняет местами первый и последний элементы непустого списка L;
д)вводит данные списка с экрана;
е) выводит в файл результаты работы.
15. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а ) или с заглавным звеном (рис. б) при следующем их описании
type
ТЭ: double;
указ_на_звено=^звено;
звено=record
элем: ТЭ;
след: указ_на_звено;
end;
При этом параметры L, L1 и L2 обозначают списки, а параметры Е, Е1 и Е2—данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство.
Определить функции, которые:
а) определяет, является ли список L пустым;
б) упорядочивает элементы списка L по алфавиту;
в) находит коды ASCII последнего и предпоследнего элементов списка L, содержащего не менее двух элементов.
г) выводит результаты работы в файл.
16. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а ) или с заглавным звеном (рис. б) при следующем их описании
type
ТЭ: string[10];
указ_на_звено=^звено;
звено=record
элем: ТЭ;
след: указ_на_звено;
end;
Параметры L, L1 и L2 обозначают списки, а параметры Е, Е1 и Е2—данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство.
Определить функции, подсчитывающие количество слов списка L, которые;
а) начинаются и оканчиваются одной и той же литерой;
б) начинаются с той же литеры, что и следующее слово;
в) совпадают с последним словом;
г) записывает результат в отдельный файл.
17. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а ) или с заглавным звеном (рис. б) при следующем их описании
type
ТЭ: string[10];
var
файл: file of ТЭ;
массив: аггау [1..50] оf ТЭ;
Определить функцию, значением которой является список, построенный из элементов:
а)файла f;
б) массива х (список строить от конца).
18. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а ) или с заглавным звеном (рис. б) при следующем их описании
Параметры L, L1 и L2 обозначают списки, а параметры Е, Е1 и Е2—данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство.
Определить функцию, которая
а) удаляет из списка L первое вхождение элемента E, если такое есть;
б)по списку L строит два новых списка: L1 —из положительных элементов и L2 —из остальных элементов списка L {ТЭ=double).
в) удаляет из списка L2 первый отрицательный элемент, если такой есть,
г) выводит результат в два разных файла.
19. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а) или с заглавным звеном (рис. б) при следующем их описании
Параметр L обозначает список, а параметр Е, Е1 — данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство. {ТЭ = char}
Описать процедуру, которая
а) вставляет в начало списка L новый элемент Е;
6) в конец списка L новый элемент Е;
в) новый элемент Е после первого элемента непустого списка L;
г) в список L новый элемент E1 за каждым вхождением элементаE;
д) записывает результаты в текстовый файл.
20. Использовать (линейные) однонаправленные списки без заглавного звена (рис. а) или с заглавным звеном (рис. б) при следующем их описании
Параметр L обозначает список, а параметр Е, Е1 — данные типа ТЭ, к которым применимы операции присваивания и проверки на равенство. {ТЭ = char}
Описать процедуру, которая
а) добавляет в список L новый элемент Е1 перед первым вхождением элемента Е, если Е входит в L;
б) в непустой список L добавляет пару новых элементов Е1 иЕ2перед его последним элементом;
в) в непустой список L, элементы которого упорядочены по не убыванию, новый элемент Е так, чтобы сохранилась упорядоченность;
г) переносит в начало непустого списка L его последний элемент;
д) записывает результаты в отдельный текстовый файл.