Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
28
Добавлен:
15.02.2016
Размер:
4.77 Mб
Скачать

К лабораторной работе № 4

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

Варианты 1-4. В вариантах 1-2 задания необходимо найти среди заданного множества чисел (контрольный пример: –3; -9; 11; 12; -4; 10; -1; 7 –11; 14) максимальное или минимальное число, соответственно. А в вариантах 3-4 отсортировать заданную последовательность чисел по возрастанию или убыванию, соответственно. Разберем вариант 3. Структура создаваемой программы: а) ввод исходной последовательности, б) сортировка ее по возрастанию, в) вывод на экран исходной и отсортированной последовательности чисел. Для ввода исходной последовательности организуется цикл, причем следует предусмотреть 2 режима ввода: с клавиатуры (посредством оператора INPUT) и для контрольного примера – автоматический (с помощью операторов READ и DATA). В основе сортировки по возрастанию лежит процесс выбора минимального числа и помещение его на место первого элемента последовательности. Причем на 1-м шаге минимальное число выбирается из всей исходной последовательности, на 2-м – из всей исходной последовательности за исключением 1-го элемента (уже отсортированного), на 3-м шаге – за исключением 1-го и 2-го элементов, на 4-м – за исключением первых трех элементов последовательности и т.д. Минимальное число в последовательности определяется путем последовательного сравнения стоящего на 1-м месте элемента с остальными элементами рассматриваемой последовательности. Если какой-нибудь элемент оказывается меньше 1-го, то он переставляется на 1-е место (посредством оператора SWAP). И оставшиеся элементы сравниваются уже с новым 1-м. Вывод на экран осуществляется следующим образом:

Исходная последовательность

–3 -9 11 12 -4 10 -1 7 –11 14

Отсортированная по возрастанию

-11 -9 -4 -3 -1 7 10 11 12 14

Вариант 5. Суммой двух (m x n)-матриц A = (aij) и B = (bij) считается (m x n)- матрица A + B = C = (cij), где при каждом i = 1,2,…,m и j = 1,2,…,m

cij = aij + bij Вывод на экран:

Матрица А

1 2 3

4 5 6

Матрица В

0 1 2

3 4 3

Матрица С

1 3 5

7 9 9

Контрольный пример

1 2 3

4 5 6

+

0 1 2

3 4 3

=

1 3 5

7 9 9

Вариант 6. След матрицы – суммы элементов

главной диагонали квадратной матрицы A = (aij).

Вывод на экран: Матрица А

1 2 3

4 5 6

7 8 9

Элементы главной диагонали

1 5 9

След матрицы TrA = 15

Вариант 7. Произведением (m x n)- матрицы

A = (aij) и (n x p)- матрицы B = (bjk) считается (m x p)- матрица C = AB = C = (cik), где при каждом i = 1,2,…,m и k = 1,2,…,p

Контрольный пример:

Вывод на экран - аналогичный варианту 5.

Вариант 8. Транспонированная (n x m)- матрица AT= (aji) получается из заданной (m x n)- матрицы A= (aij) путем перемены ролями ее строк и столбцов.

Контрольный пример:

Исходная матрица Транспонированная

Вывод на экран – аналогичный варианту 5.

Организуется двойной цикл для перезаписи строк массива a(m,n) в столбцы массива b(n,m).

Вариант 9. Минор – определитель квадратной матрицы порядка k, полученной из заданной (m x n)- матрицы путем удаления некоторых m-k строк и n-k столбцов.

Матрица

Минор

a1,1 a1,2 …a1,k … a1,m

a2,1 a2,2 …a2,k … a2,m

………………………………..

ak,1 ak,2 …ak,k … ak,m

………………………………..

an,1 an,2 …an,k … an,m

a1,1 a1,2 … a1,k

a2,1 a2,2 … a2,k

………………………

ak,1 ak,2 … ak,k

Вывод на экран – аналогичный варианту 5.

Организуется перезапись фрагмента массива a1(m,n) в массив a2(k,k).

Варианты 5-9.

Для работы с матрицами организуются двойные (вложенные) циклы, а в варианте 7 – тройной цикл. С помощью оператора INPUT вводятся размеры матриц (m, n, p – для варианта 7). Оператор DIM резервирует в памяти место для элементов матриц, которые также вводятся с помощью оператора INPUT, поставленного в цикл FOR … NEXT. Для ввода двух матриц в память и их последующего вывода на экран потребуется 4 двойных цикла. Однако можно обойтись и одним. Покажем, как это можно сделать:

'==1===== Блок ввода и вывода матриц А и В ==============

100 FOR k = 1 TO 4

110 SELECT CASE k

120 CASE 1: ik = m: jk = n: PRINT "Ввод элементов матрицы А"

130 CASE 2: ik = n: jk = p: PRINT "Ввод элементов матрицы B"

140 CASE 3: CLS: ik = m: jk = n: LOCATE 1, 1: PRINT f$

PRINT "Матрица А"

150 CASE 4: ik = n: jk = p: PRINT "Матрица В"

160 END SELECT

170 FOR i = 1 TO ik

180 FOR j = 1 TO jk

190 IF k = 1 THEN INPUT "", a(i,j) ELSE IF k = 2 THEN INPUT "", b(i,j)

200 IF k = 3 THEN PRINT a(i,j); ELSE IF k = 4 THEN PRINT b(i,j);

210 NEXT j

220 PRINT

230 NEXT i, k

'=================================================

Приведенный блок из программы умножения двух матриц сложнее аналогичных блоков для других вариантов заданий, так как требует переназначения конечных значений счетчиков цикла ik и jk. С точки зрения решения задачи 4 цикла для ввода и вывода на экран двух матриц и использование для этого одного цикла являются равнозначными вариантами программы.

Еще один блок программы с циклом потребуется для реализации собственно поставленной задачи (умножения, сложения, транспонирования и пр.), а также вывода результата на экран (результирующей матрицы или следа матрицы, как в варианте 6).

Вариант 10.

Программа нахождения наибольшего общего делителя (НОД) для двух чисел A и B по алгоритму Евклида.

Если A > B, то нужно от А отнять В. Если В > А, то необходимо от В отнять А, и так продолжать до тех пор, пока не станет А = В. Тогда значение А (или В) будет НОД.

Контрольный пример: А = 731, В = 425, НОД = 17

Вариант 11.

Программа нахождения наименьшего общего делителя двух чисел

Наименьший общий делитель двух чисел – наименьшее целое число больше 1, на которое делятся оба числа.

Контрольный пример: 697 и 1649. НОД = 17

Для нахождения НОД организуется цикл для перебора чисел в пределах от 2 до значения меньшего из двух проверяемых чисел. Наименьшее из перебираемых чисел, на которое без остатка разделились оба проверяемых числа, и будет наименьшим общим делителем.

Вариант 12.

Программа нахождения простых чисел

Простое число – натуральное число больше 1, единственными делителями которого является только оно само и 1.

Проверочная таблица простых чисел до 100

  1. 13 31 53 73

  2. 17 37 59 79

  1. 19 41 61 83

  1. 23 43 67 89

  1. 29 47 71 97

После ввода границы поиска организуется двойной цикл для проверки всех чисел в указанных пределах. Если проверяемое число i не разделилось ни на одно из чисел  i – 1, то это число – простое.

Вариант 13.