Смекни!
smekni.com

Создание библиотек подпрограмм в Turbo Pascal (стр. 2 из 2)

Ещё несколько слов о видимости объектов модуля. Если в программе, использующей модуль, имеются идентификаторы, совпадающие с точностью до символа с идентификаторами модуля, то они «перекрывают» соответствующие ресурсы модуля. Тем не менее, даже в такой ситуации доступ к этим ресурсам модуля может быть получен таким образом: <имя модуля>.<имя ресурса>.

В заключение приведем набор заданий, позволяющих получить определенные навыки в разработке модулей.

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. Дан массив длинных действительных чисел. Упорядочить этот массив в порядке возрастания.