comp-science.narod.ru ==> Дидактические материалы по информатике ==> Задачи по теме "Модули"


 

Выходные данные статьи:
А.П. Шестаков. Создание библиотек подпрограмм в Turbo Pascal //Информатика и образование, 1999, № 9. — с. 22-28.

 

Задачи по теме "Модули"

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):

  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).

 

XI. Разработать способ представления множеств, содержащих более 255 элементов (до 2000). Создать модуль, позволяющий выполнять следующие операции над элементами таких множеств:

  1. объединение;
  2. пересечение;
  3. разность;
  4. функция проверки принадлежности элемента множеству;
  5. функция проверки, является ли данное множество подмножеством (надмножеством) другого.

Используя созданный модуль, решить следующие задачи:

1. Дан массив множеств. Упорядочить элементы массива в порядке возрастания количества компонент соответствующих множеств.

2. Разработать программу, которая вводит несколько множеств, выражение, операндами которого являются эти множества, с операциями объединения, пересечения и вычитания, вычисляет значение этого выражения и выводит результат.

 

XII. Разработать модуль для работы с базой данных определённой структуры (задать самостоятельно), хранящейся в файле. Предусмотреть следующие действия:

  1. добавление записи в базу в конец файла;
  2. удаление записи (записей) из базы по определенному критерию (заданному значению одного из полей);
  3. сортировка записей в базе по одному из полей (разработать общий алгоритм сортировки с использованием нетипизированных параметров) с записью результата сортировки в новый файл;
  4. выборка записей из базы по определенному критерию (заданному значению одного из полей) с записью в другой файл;
  5. добавление записи в отсортированную базу с сохранением упорядоченности по выбранному критерию.

Используя модуль, решить следующие задачи:

1) даны две базы данных заданной структуры, упорядоченные по одному и тому же признаку. Добавить все компоненты второй базы в первую, сохранив её упорядоченность;

2) выбрать и поместить в текстовый файл записи, отвечающие нескольким критериям одновременно (2-3).

 

XIII. Разработать модуль для работы с обыкновенными дробями, числителем и знаменателем которых являются длинные числа.

При описании использовать следующие типы

		Type Dl_Ch = Array[1..1024] Of 0..9;
		     Drob = Record Chisl, Znam : Dl_Ch End;

В модуле должны быть представлены следующие операции над обыкновенными дробями:

  1. сложение;
  2. вычитание;
  3. умножение;
  4. деление;
  5. сокращение;
  6. выделение целой части;
  7. шесть операций отношения (разработать логические функции).

Используя разработанный модуль, решить следующие задачи:

1) Дан массив обыкновенных дробей. Найти разность минимального и максимального элементов массива.

2) Дан массив обыкновенных дробей.

 

XIV. Разработать модуль для работы с числами, записанными в римской системе счисления.

Модуль должен содержать подпрограммы для следующих операций:

  1. перевод натурального числа из десятичной системы счисления в римскую;
  2. перевод числа из римской системы счисления в десятичную;
  3. сложение;
  4. вычитание;
  5. умножение;
  6. целочисленное деление и нахождение остатка от деления;
  7. операции отношения (описать в виде логических функций).

Используя разработанный модуль, решить следующие задачи:

1) Дан массив чисел, записанных в римской системе счисления. Выполнить сортировку этого массива. Ответ вывести в десятичной и римской системах счисления.

2) Даны два массива натуральных чисел. В одном из них числа записаны в десятичной системе счисления, в другом — в римской. Выписать те числа, которые встречаются как в том, так и в другом массиве, или сообщить об их отсутствии. В случае положительного ответа результат представить в римской и десятичной системах счисления.

 

XV. Разработать модуль для работы с "длинными строками". Длинную строку определить так:

	Type LongString = Array[1..4] Of String;

Модуль должен содержать подпрограммы, позволяющие:

  1. вводить "длинную строку";
  2. выводить "длинную строку";
  3. выполнять операции над "длинными строками" (склеивания, отношения);
  4. дублировать процедуры и функции, принятые для обычного типа String.

Используя разработанный модуль, решить следующие задачи:

1) Отсортировать заданный массив "длинных строк".

2) Подсчитать, сколько раз встречается заданная последовательность символов в "длинной строке". Указание. Воспользоваться аналогом функции Pos применительно к "длинной строке".

 


Рейтинг ресурсов УралWeb

 

© А.П. Шестаков, 1999
Сайт создан в системе uCoz