Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Вычислительная техника и программирование. В 2 ч. Ч. 1. Программирование в среде TURBO PASCAL 7

.0.pdf
Скачиваний:
0
Добавлен:
24.11.2025
Размер:
1.7 Mб
Скачать

Тестовая проверка. Выполнить программу при N=4 и M=4, приняв следующие значения исходной матрицы А:

æ

1 .5

2 .0

- 1 .0

2

ö

ç

3 .3

4 .4

5 .5

6 .6

÷

ç

- 2

3 .

4 .

5 .

÷

ç

÷

è

0 .0

- 2 .

7 . - 4

ø

В результате выполнения программы выводится матрица в виде:

1.52.0

3.3 4.4 5.5 6.6

<пустая строка>

0.0

Правильность выполнения программы легко устанавливается сравне- нием исходной матрицы А с результатом печати матрицы В. В тестовом наборе данных рассмотрены следующие случаи:

1)в строке есть отрицательный элемент;

2)в строке нет отрицательных элементов;

3)первый элемент строки - отрицательный.

Использование указанных случаев позволяет убедиться в работоспо- собности программы при любых наборах данных.

71

Л а б о р а т о р н а я р а б о т а N 8 “Программирование с использованием подпрограмм пользователя”

Цель работы - овладение навыками алгоритмизации и программиро- вания задач с использованием подпрограмм пользователя различных видов, овладение навыками написания подпрограмм и обращения к ним, выбора параметров подпрограмм.

Задания для самостоятельной подготовки

1.Изучить:

-правила записи подпрограмм различных видов и способов об- ращений к ним;

-способы передачи параметров в подпрограмму;

-правила записи программ, использующих подпрограммы раз- личных видов;

-порядок выполнения программ, использующих подпрограммы.

2.Разработать алгоритм решения в соответствии с заданием.

3.Составить программу решения задачи.

4.Подготовить тестовый вариант программы и исходных данных.

Задание к работе

Задание А.

1. Выполнить на ЭВМ программу, использующую подпрограмму- функцию, в соответствии с заданием, указанным в табл. 1.

Т а б л и ц а 1

Вар.

Условие задачи

Примечания

задан.

 

 

 

 

1

 

2

3

 

1

Вычислить большие корни квадратных уравне-

Все корни

действи-

 

ний

ax + b = 0

тельные

 

 

x2

 

 

 

cy 2

dy f = 0

 

 

2

Подсчитать число точек, находящихся внутри

Расстояний

точки от

 

круга радиусом r с центром в начале координат;

начала

координат

 

координаты заданы массивами Х(100), Y(100)

вычислять в подпро-

 

 

 

грамме

 

3

Определить периметры треугольников, задан-

Длину стороны треу-

 

ных координатами их вершин

гольников вычислять

 

XA(5), XB(5), XC(5)

в подпрограмме

 

YA(5), YB(J), YC(5)

 

 

72

П р о д о л ж е н и е т а б л и ц ы 1

1

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

3

 

 

4

Подсчитать число точек, находящихся внутри

Расстояние

точки от

 

круга радиусом r с центром в точке с координа-

центра

круга

опре-

 

тами (1,1); координаты заданы массивами Х(80),

делять

в

подпро-

 

Y(80).

 

 

 

 

 

 

 

 

 

 

 

 

 

грамме

 

 

5

Вычислить

z =

v1

+ v2 + v3

 

, где

v1,v2,v3 -

vi вычислять

в под-

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

программе

 

 

 

объемы шаров с радиусами r1,r2,r3 соответ-

 

 

 

ственно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

Вычислить

суммы

положительных

элементов

N≤60, M≤60

 

массивов Х(N), Y(M), Z(K).

 

 

 

 

 

 

 

K≤70

 

7

Вычислить среднее арифметическое поло-

 

N1≤100

 

 

жительных

элементов

для

 

массивов

А(N1),

 

N2≤100

 

 

B(N2), C(N3).

 

 

 

 

 

 

 

 

 

 

 

 

 

N3≤100

 

8

Подсчитать

 

количество

элементов

 

матриц

 

 

 

 

 

Х(10,15) и Y(20,12), удовлетворяющих условиям

 

 

 

 

 

0≤xij ≤1 и 0≤yij ≤1.

 

 

 

 

 

 

 

 

 

 

 

 

9

Вычислить

суммы

положительных

элементов

 

 

 

 

 

каждой строки для матриц А(10,12) и В(15,10).

 

 

 

 

10

Вычислить

z

=

 

 

x m1

+ x m 2

 

, где xm1 и xm2 -

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

наименьшие элементы массивов Х1(70), Х2(80).

 

 

 

 

11

Вычислить суммы элементов главных диагона-

 

M≤20

 

 

лей матриц A(N,N), B(M,M).

 

 

 

 

 

N≤30

 

12

Вычислить

z

=

 

 

s1 + s2

 

 

, где s1

- сумма

Обе суммы

вычис-

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

массива X(50); s2 -

лять в одной под-

 

положительных

элементов

программе

 

 

 

сумма отрицательных элементов масси-ва Y(60).

 

 

 

 

13

Подсчитать число нулевых элементов для мат-

 

M≤20

 

 

риц A(N,M) и B(M,N).

 

 

 

 

 

 

 

 

N≤20

 

14

Вычислить сумму элементов нижних треуголь-

 

 

 

 

 

ных матриц для матриц А(15,15) и В(20,20).

 

 

 

 

15

Определить число положительных эле-ментов до

 

N≤50

 

 

первого отрицательного

в

 

массивах

X(40),

 

 

 

 

 

Y(50), Z(N).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Проверить правильность выполнения программы с помощью тесто- вого варианта.

73

Задание Б.

1. Выполнить на ЭВМ программу, использующую подпрограмму- процедуру в соответствии с номером, указанным в табл. 2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а 2

Вар.

 

 

Условие задачи

 

Примечания

Задан.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

2

 

 

 

 

 

 

 

3

 

1

Вычислить z =

 

s1

+ s2

, где s1 и k1- сумма и

 

M≤100

 

 

 

 

 

 

 

 

 

 

 

k1 k2

 

 

 

 

 

N≤100

 

количество положительных элементов мас-сива

 

 

 

 

 

 

 

 

X(N); s2 и k2 - сумма и количество положитель-

 

 

 

 

 

ных элементов массива Y(M).

 

 

 

 

2

Вычислить

z =

es1

+ e s2

 

, где s1 и k1- сум-

Обе

суммы

вычис-

 

k1 k2

 

 

 

 

 

 

 

 

 

 

лять

в

одной под-

 

ма и количество положительных элементов

программе

 

 

массива X(100); s2 и k2 - сумма и количество

 

 

 

 

 

положительных элементов массива Y(80).

 

 

 

 

3

Вычислить и запомнить суммы поло-жительных

 

 

 

 

 

элементов

каждой строки

матрицы А(10,20),

 

 

 

 

 

В(15,10).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

Вычислить z = ( x1

+ y1) /

 

( x2 y2 ) , где х1

Все

корни

действи-

 

и х2 - корни уравнения 2х2+х-4=0, у1 и у2 -

 

тельные

 

 

корни уравнения ау2+2у-1=0

 

 

 

 

5

Найти наибольшие элементы и их порядковые

 

 

N≤80

 

номера массивов X(N) и Y(M).

 

 

M≤70

6

Переписать

положительные

 

элементы массива

Запись

в массив Z

 

X(100) и Y(80) в массив Z подряд.

выполнить в подпро-

 

 

 

 

 

 

 

 

 

 

 

 

 

грамме

 

 

7

Найти наименьшие элементы и номера строк и

 

 

 

 

 

столбцов, в которых они расположены, для мат-

 

 

 

 

 

риц А(10,15) и В(15,12).

 

 

 

 

 

 

 

8

Вывести на печать элементы целочисленных

 

 

 

 

 

матриц N(5,8) и M(10,6), кратные трем.

 

 

 

 

 

Вычислить

 

 

 

 

 

 

 

 

 

 

Все

суммы

вычис-

 

40

 

 

 

50

 

 

 

9

z =

å sin x i

+ å cos y i

лять в одной под-

 

i =1

 

 

i =1

 

 

, где xi и

программе

 

 

 

40

 

 

 

 

 

 

 

 

 

 

å

x i

 

 

 

 

 

 

 

 

 

 

 

 

 

i =1

 

 

 

 

 

 

 

 

 

74

yi заданы массивами.

П р о д о л ж е н и е т а б л и ц ы 2

1

 

2

 

3

10

Вычислить z =

x m ax y m in

, где xmax -

xmax и ymin вычи-

2

 

 

 

слять в одной под-

 

максимальный элемент массива X(50); ymin -

 

программе

 

минимальный элемент массива Y(40)/

 

11

Вычислить и запомнить количество отрицатель-

 

 

ных элементов каждого столбца для матриц

 

 

А(10,10), В(15,20).

 

 

 

12

Вычислить суммы элементов верхней треуголь-

 

 

ной матрицы для матриц А(10,10), В(15,15).

 

13

Найти средние значения и стандартные отклоне-

N≤100

 

ния для элементов массивов X(N), Y(M).

M≤100

14

Вычислить суммы и количества элементов,

 

 

находящихся в интервале от a до b для матриц

 

 

X(10,8) и Y(10,12).

 

 

 

15

Преобразовать массивы X(50) и Y(60), рас-

 

 

положив в них подряд только положитель-ные

 

 

элементы. Вместо остальных элементов записать

 

 

нули.

 

 

 

2. Проверить правильность выполнения программы с помощью тесто- вого варианта.

Пример выполнения работы

Задание А.

1. Выполнить на ЭВМ решение задачи. Определить ближайшую к началу координат точку, находящуюся в верхней полуплоскости, и наиболее удаленную точку, лежащую в нижней полуплоскости. Координаты точек, находящихся в верхней полуплоскости, заданы массивами X1(N) и Y1(N), а лежащих в нижней полуплоскости - массивами X2(M) и Y2(M), где N≤40, M≤60.

Для каждой точки верхней полуплоскости следует определить расстоя- ние от начала координат. Из этих расстояний необходимо найти наимень- шее. Такие же действия выполнить для точек, находящихся в нижней полу- плоскости, однако найти наибольшее расстояние от начала координат.

75

Вычисление расстояний от начала координат и нахождение наимень- шего или наибольшего из них выполним в подпрограмме-функции.

Использование одной подпрограммы для нахождения наибольшего или наименьшего значений потребует введения дополнительного парамет- ра, который необходим для проверки условия K R>K RM. Если K=1, то условие R>RM используется для нахождения наибольшего; если K=-1, то условие R<RM используется для нахождения наименьшего.

В подпрограмму необходимо передать массивы координат точек, их размер, а также параметр К, который может принимать значения +1 или -1. Результат, полученный в подпрограмме-функции, присваивается ее имени. Схема алгоритма решения задачи представлена на рис. 8.1.

1

начало

2

N,M

X1,Y1,X2,Y2 ввод исходных данных

3

F(X1,Y1,N,-1) вызов подпрограммы-функции

4

S1=F

присваивание переменной значения функции

5

F(X2,Y2,M,1)

вызов подпрограммы-функции

6

S2=F

присваивание переменной значения функции

7

S1, S2

вывод результатов

8 конец

76

9 Подпрограмма-функция

вход

задание начального значе-

ния

 

10

RM от К

Да

Нет

K>0

 

 

11

 

12

RM=−1020 RM=1020

 

13

 

 

 

i = 1,N

цикл вычисления расстояния R от

 

 

 

начала координат до точки, заданной

 

14

 

координатами массивов X и Y

 

 

 

 

R =

x2 + y2

 

Нет

15

проверка условия при К=1 нахождения

 

 

 

KR³KRm

наибольшего, а при К=-1 нахождения

 

 

 

наименьшего расстояния от начала ко-

 

 

Да

ординат до точки, расположенной со-

 

 

ответственно в нижней и верхней полу-

 

16

 

плоскостях

 

RM=R

 

 

 

i

 

17

F=RM

присвоение имени подпрограммы-

функции результата вычисления

18

 

выход

77

Рис. 8.1

78

2. Проверить правильность выполнения программы для массивов,

заданных значениями

X1={-4, 0, 3}; Y1={0, 5, 4}; X2={-4, 0, 2}; Y2={-2, -5, -1},

для которых наименьшее расстояние от начала координат в верхней полу- плоскости s1=4, а наибольшее - в нижней полуплоскости s2=5.

Задание Б.

1. Решить на ЭВМ задачу. Переписать положительные элементы мас- сивов X(N), Y(M) в массив Z подряд. Запись положительных элементов в массив осуществить в подпрограмме. Принять ограничения: N<=100 и M<=100.

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

Поскольку в массив результатов Z записываются подряд положительные элементы из нескольких массивов, в списке параметров должны фигуриро- вать также: входной параметр L - номер ячейки, начиная с которой необхо- димо осуществлять запись в массив результатов; выходной параметр К - номер ячейки, в которую записан последний положительный элемент ис- ходного массива при предыдущем обращении к подпрограмме. После окон-

чания записи элементов в массив результатов этот параметр определяет количество элементов, записанных в массив результатов.

При первом обращении к подпрограмме в нее необходимо передать имя массива Х. Количество его элементов N; входной параметр L=1, если запись осуществляется в массив Z, начиная с элемента с индексом 1, имя выходного массива Z, количество его элементов N+M и получать в подпро- грамме выходной параметр К, определяющий количество элементов, запи- санных в массив Z.

При втором обращении необходимо передать соответственно Y, M, L=K+1, Z, N+M, K. После второго обращения к подпрограмме К - суммар- ное количество элементов, записанных в массив Z после двух выполнений подпрограммы.

Схема алгоритма решений этой задачи имеет вид, представленный на рис. 2. В схеме алгоритма при первом обращении к подпрограмме параметр L задан равным нулю, так как в подпрограмме перед записью элемента в массив Z индекс К увеличивается на 1. По этой же причине при втором обращении параметру L присваивается значение К, т.е. меньшее на 1.

79

1

начало

2

N,MX,Y

ввод исходных данных

 

3

F(X,N,0,Z,N+M,K)

вызов подпрограммы-процедуры

4

F(Y,M,K+1,Z,N+M,K)

вызов подпрограммы-процедуры

5

Z

вывод результатов

6

конец

Подпрограмма-процедура

7

вход

8

K=L задание начального значения индекса результирующего массива Z

9

i = 1,N

организация цикла обработки массива

 

10

Нет

Xi>0

 

определение положительных элементов

 

 

11

Да

массива

запись положительных элементов

 

K=K+1

 

 

обрабатываемого массива в результи-

Zk=Xi

 

i

 

рующий массив

12

 

Рис. 8.2

 

 

выход

 

80