comp-science.narod.ru ==> Дидактические материалы по информатике ==> Задачи по теме "Модули"
Выходные данные статьи:
I. Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над комплексными числами: 1) сложение; 2) вычитание; 3) умножение; 4) деление; 5) вычисление модуля комплексного числа; 6) возведение комплексного числа в степень n (n натуральное).
Комплексное число представить следующим типом:
Type Complex = Record R, M : Real; {действительная и мнимая часть числа} End;
Используя этот модуль, решить задачи:
1. Дан массив A массив комплексных чисел. Получить массив C, элементами которого будут модули сумм рядом стоящих комплексных чисел.
2. Дан массив A[M] массив комплексных чисел. Получить матрицу B[N, M], каждая строка которой получается возведением в степень, равную номеру этой строки, соответствующих элементов данного массива A.
II. Реализовать в виде модуля набор подпрограмм для выполнения следующих операций с квадратными матрицами: 1) сложение двух матриц; 2) умножение одной матрицы на другую; 3) нахождение транспонированной матрицы; 4) вычисление определителя матрицы.
Матрицу описать следующим образом:
Const NMax = 10; Type Matrica = Array [1..NMax, 1..Nmax] Of Real;
Используя этот модуль, решить следующие задачи:
1. Решить систему линейных уравнений N-го порядка (2<=N<=10) методом Крамера.
2. Задан массив величин типа Matrica. Отсортировать этот массив в порядке возрастания значений определителей матриц.
III. Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над векторами на плоскости: 1) сложение; 2) вычитание; 3) скалярное умножение векторов; 4) умножение вектора на число; 5) длина вектора.
Вектор представить следующим типом:
Type Vector = Record X, Y : Real End;
Используя этот модуль, решить задачи:
1. Дан массив A массив векторов. Отсортировать его в порядке убывания длин векторов.
2. С помощью датчика случайных чисел сгенерировать 2N целых чисел. N пар этих чисел задают N точек координатной плоскости. Вывести номера тройки точек, которые являются координатами вершин треугольника с наибольшим углом.
IV. Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над натуральными числами в P-ичной системе счисления (2<=P<=9): 1) сложение; 2) вычитание; 3) умножение; 4) деление; 5) перевод из десятичной системы счисления в P-ичную; 6) перевод из P-ичной системы счисления в десятичную; 7) логическая функция проверки правильности записи числа в P-ичной системе счисления; 8) функции, реализующие операции отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше).
P-ичное число представить следующим типом:
Type Chislo = Array [1..64] Of 0..8;
Используя этот модуль, решить задачи:
1. Возвести число в степень (основание и показатель степени записаны в P-ичной системе счисления). Ответ выдать в P-ичной и десятичной системах счисления.
2. Дан массив A массив чисел, записанных в P-ичной системе счисления. Отсортировать его в порядке убывания. Ответ выдать в P-ичной и десятичной системах счисления.
V. Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над натуральными числами в шестнадцатеричной системе счисления: 1) сложение; 2) вычитание; 3) умножение; 4) деление; 5) перевод из двоичной системы счисления в шестнадцатеричную; 6) перевод из шестнадцатеричной системы счисления в десятичную; 7) функция проверки правильности записи числа в шестнадцатеричной системе счисления; 8) функции, реализующие операции отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше).
Используя этот модуль, решить задачи:
1. Возвести число в степень (основание и показатель степени записаны в шестнадцатеричной системе счисления). Ответ выдать в шестнадцатеричной и десятичной системах счисления.
2. Дан массив A массив чисел, записанных в шестнадцатеричной системе счисления. Отсортировать его в порядке убывания. Ответ выдать в шестнадцатеричной и десятичной системах счисления.
VI. Определим граф как набор точек, некоторые из которых соединены отрезками, подграф граф, подмножество данного графа. Реализовать в виде модуля набор подпрограмм, определяющих: 1) число точек в графе; 2) число отрезков в графе; 3) число изолированных подграфов в графе (подграфов, не соединенных отрезками); 4) диаметр графа длину максимальной незамкнутой линии в графе (длина каждого звена единица); 5) граф объединение двух графов; 6) подграф пересечение двух графов; 7) подграф дополнение данного графа до полного (графа с тем же количеством вершин, что и в заданном, и с линиями между любыми двумя вершинами); 8) число отрезков, выходящих из каждой вершины графа; 9) при запуске должны инициализироваться переменные: Full_Graph полный граф с числом вершин NumberOfVertix, Null_Graph граф без отрезков с числом вершин NumberOfVertix.
Граф представить как объект
Const NumberOfVertix = 50; Type Graph = Array[1..NumberOfVertix, 1..NumberOfVertix] Of Boolean;
Используя модуль, решить задачу: найти все правильные графы из N вершин (граф правилен, если из всех вершин выходит равное количество отрезков).
VII. Реализовать в виде модуля набор подпрограмм для работы с длинными целыми числами (числами, выходящими за диапазон допустимых значений любого целого типа): 1) сложение; 2) вычитание; 3) умножение; 4) нахождение частного и остатка от деления одного числа на другое; 5) функции, реализующие операции отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше).
Длинное число представить следующим типом:
Type Tsifra = 0..9; Chislo = Array [1..1000] Of Tsifra;
Используя этот модуль, решить задачи:
1. Возвести число в степень (основание и показатель степени длинные числа).
2. Дан массив длинных чисел. Упорядочить этот массив в порядке убывания.
VIII. Реализовать в виде модуля набор подпрограмм для выполнения операций с многочленами от одной переменной (первый многочлен степени m, второй степени n): 1) сложение; 2) вычитание; 3) умножение; 4) деление с остатком; 5) операции отношения (равно, не равно); 6) возведение в натуральную степень k одного из многочленов; 7) вычисление производной от многочлена; 8) вычисление значения в точке x0.
Многочлен представить следующим типом:
Type Mnogochlen = Array [1..500] Of Integer;
Используя этот модуль, решить задачи:
1. Найти наибольший общий делитель многочленов P(x) и Q(x).
2. Вычислить: Ps(x)-Qr(x) (s, r натуральные).
IX*. Реализовать в виде модуля набор подпрограмм для работы с длинными действительными числами (числами, выходящими за диапазон допустимых значений любого действительных типа или не представленных в памяти ЭВМ): 1) сложение; 2) вычитание; 3) умножение; 4) нахождение частного от деления одного числа на другое с заданным количеством знаков после запятой; 5) функции, реализующие операции отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше); 6) тригонометрические функции, где аргументом и значениями являются длинные действительные числа (указание: использовать разложение соответствующей функции в ряд).
Длинное действительное число представить следующим типом:
Type Tsifra = 0..9; Chislo = Array [1..1000] Of Tsifra; LongReal = Record Znak : 0..1; {0 - "плюс", 1 - "минус"} Ts, Dr : Chislo {целая и дробная части} End;
Используя этот модуль, решить задачи:
1. Возвести число в степень (основание длинное действительное, показатель степени длинное целое число).
2. Дан массив длинных действительных чисел. Упорядочить этот массив в порядке возрастания.
X. Реализовать в виде модуля набор подпрограмм для выполнения операций с многочленами от одной переменной (первый многочлен степени m, второй - степени n):
Многочлен представить следующим типом:
Type Mnogochlen = Array [1..500] Of Integer;
Используя этот модуль, решить задачи:
1. Найти наибольший общий делитель многочленов P(x) и Q(x).
2. Вычислить: Ps(x) - Qr(x).
XI. Разработать способ представления множеств, содержащих более 255 элементов (до 2000). Создать модуль, позволяющий выполнять следующие операции над элементами таких множеств:
Используя созданный модуль, решить следующие задачи:
1. Дан массив множеств. Упорядочить элементы массива в порядке возрастания количества компонент соответствующих множеств.
2. Разработать программу, которая вводит несколько множеств, выражение, операндами которого являются эти множества, с операциями объединения, пересечения и вычитания, вычисляет значение этого выражения и выводит результат.
XII. Разработать модуль для работы с базой данных определённой структуры (задать самостоятельно), хранящейся в файле. Предусмотреть следующие действия:
Используя модуль, решить следующие задачи:
1) даны две базы данных заданной структуры, упорядоченные по одному и тому же признаку. Добавить все компоненты второй базы в первую, сохранив её упорядоченность;
2) выбрать и поместить в текстовый файл записи, отвечающие нескольким критериям одновременно (2-3).
XIII. Разработать модуль для работы с обыкновенными дробями, числителем и знаменателем которых являются длинные числа.
При описании использовать следующие типы
Type Dl_Ch = Array[1..1024] Of 0..9; Drob = Record Chisl, Znam : Dl_Ch End;
В модуле должны быть представлены следующие операции над обыкновенными дробями:
Используя разработанный модуль, решить следующие задачи:
1) Дан массив обыкновенных дробей. Найти разность минимального и максимального элементов массива.
2) Дан массив обыкновенных дробей.
XIV. Разработать модуль для работы с числами, записанными в римской системе счисления.
Модуль должен содержать подпрограммы для следующих операций:
Используя разработанный модуль, решить следующие задачи:
1) Дан массив чисел, записанных в римской системе счисления. Выполнить сортировку этого массива. Ответ вывести в десятичной и римской системах счисления.
2) Даны два массива натуральных чисел. В одном из них числа записаны в десятичной системе счисления, в другом в римской. Выписать те числа, которые встречаются как в том, так и в другом массиве, или сообщить об их отсутствии. В случае положительного ответа результат представить в римской и десятичной системах счисления.
XV. Разработать модуль для работы с "длинными строками". Длинную строку определить так:
Type LongString = Array[1..4] Of String;
Модуль должен содержать подпрограммы, позволяющие:
Используя разработанный модуль, решить следующие задачи:
1) Отсортировать заданный массив "длинных строк".
2) Подсчитать, сколько раз встречается заданная последовательность символов в "длинной строке". Указание. Воспользоваться аналогом функции Pos применительно к "длинной строке".
© А.П. Шестаков, 1999