Лабораторная работа № 4
Тема: Разработка и реализация программ с использованием массивов
Цель работы:
-
получить навыки составления и реализации программ с одномерными и двумерными массивами, используя средства языка Фортран.
Задания к лабораторной работе
Задание 4.1 Представить математическую запись фрагмента программи й вычислить значение переменной Х посля его выполнения, если элементи массива определяются по формуле a(i)=mod(37*a(i-1)+3, 64), где a(1) равно номеру варианта..
№ |
Фрагмент програми |
№ |
Фрагмент програми |
1,2 |
T=2 N=3 X=a(1) Do j=1,N X=X*T+a(j+1) End do |
7,8 |
N=4 X=a(N) Do j=N-1,1,(-1) X=a(j)+1/x End do |
3,4 |
N=4 X=a(1) Do j=2,N If (a(j)<x) then X=a(j) End if End do |
9,10 |
T=3 N=3 X=a(N+1) Do j=1,N X=X+a(j)*exp((N-j-1)*log((T)) End do |
5,6 |
N=4 M=int(N/2) K=N Do j=2,M Y=a(j) a(j)=a(K) a(K)=Y K=K-1 End do |
11,12 |
N=4 X=0 K=0 Do j=1,N If (a(j)>0) then X=X+a(j) K+K+1 End if End do If (k/=0) then X=X/K End if |
|
|
|
|
|
|
|
|
Задание 4.2 Составить программу вычисления следующих величин при условии, что элементы массива вычисляются по формуле a(i)=mod(37*a(i-1)+3,64), где a(1) равно номеру варианта. Количество элементов массива 20. Исходный массив и результаты вычислений вывести на экран.
№ вар. |
Условие |
1,20 |
Наибольшего элемента массива А и его порядкового номера; количество элементов с нечетными номерами, меньших D, (где D – целое число [1, 63]). |
2,19 |
Суммы элементов массива А, значения которых кратны N (номеру варианта); произведение элементов с нечетными номерами. |
3,18 |
Суммы элементов массива А, значения которых четные числа; произведение элементов со значениями из интервала [т, п] (т, п –целые числа из интервала [1, 63]). |
4,17 |
Среднего арифметического положительных элементов массива А; значение максимального элемент с четным номером и его порядковый номер. |
5,16 |
Суммы элементов массива А, значения которых нечетные числа; максимальный по модулю элемент и его порядковый номер. |
6,15 |
Среднего геометрического положительных элементов массива А; минимальный по модулю элемент и его порядковый номер. |
7,14 |
Суммы элементов массива а, значения которых двузначные четные числа; максимальный элемент среди элементов массива а, значения которых двузначные четные числа. |
8,13 |
Произведения наибольшего и наименьшего элементов массива А; среднего арифметического элементов массива А. |
9,12 |
Суммы элементов массива а, значения которых двузначные нечетные числа. Сформировать из таких элементов новый массив В. |
10,11 |
Модуля вектора а/3. Сформировать из элементов массива больших, чем модуль вектора а/3 новый массив В. |
Задание 4.3 Ввести исходный массив с клавиатуры, выполнить с элементами массива действия, согласно варианту. Вывести на экран исходный и преобразованный массивы.
№ вар. |
Условие |
|
Дан двумерный массив чисел размерности не более 10×15. Составить программу определения максимального значения среди нечетных столбцов. |
|
Дан двумерный массив чисел размерности . Определить номер строки, содержащей максимальное число элементов, удовлетворяющих условию . Вывести на экран этот номер и исходный массив. |
|
Дан двумерный массив чисел размерности . Найти минимальный элемент в каждой из строк этого массива. Создать из найденных элементов одномерный массив . Вывести на экран массивы и . |
|
Найти количество элементов двумерного массива размерности , удовлетворяющих условию . Вывести на экран эти элементы и исходный массив. |
|
Составить программу для замены четных строк матрицы А на соответствующие строки матрицы В. Матрицы имеют одинаковую размерность, не превышающую 8×12. |
|
Даны два двумерных массива и порядка . Сформировать массив , элементы которого определяются по формуле . Вывести на печать массив . |
|
Проверить диагональность квадратной матрицы порядка . Матрица диагональна, если при . Напечатать сообщение “МАТРИЦА ДИАГОНАЛЬНА” или “МАТРИЦА НЕДИАГОНАЛЬНА”. Исходный массив вывести на печать. |
|
Исключить из матрицы порядка отрицательные элементы, записав на их место нули. Подсчитать количество произведенных замен. Вывести на печать получившуюся матрицу. |
|
Составить программу для вычисления матрицы С , элементы которой определяются по формуле |
|
Подсчитать количество столбцов в матрице размерности которые содержат только положительные элементы. Вывести результат подсчета и исходную матрицу на экран. |
|
Разработать программу, вычисляющую сумму отрицательных элементов в каждом столбце матрицы А размером до 9×12. Результаты записать в одномерный массив. |
|
Дана квадратная матрица порядка . Определить максимальный по модулю элемент каждой строки. Результаты записать в одномерный массив. |
|
Дана квадратная матрица порядка . Найти сумму элементов матрицы, расположенных над главной диагональю. Вывести на экран исходный массив и величину вычисленной суммы. |
|
Найти количество элементов двумерного массива размерности , удовлетворяющих условию и количество элементов, удовлетворяющих условию . Вывести результат подсчета и исходную матрицу на экран. |
|
Даны два одномерных массива и которые содержат по элементов. Образовать двумерный массив размерности , элементы которого определяются соотношением , где max – максимальный элемент массива В. |
|
Найти минимальный элемент главной диагонали квадратной матрицы порядка , разделить на него все элементы матрицы, образовав новую матрицу той же размерности. Вывести исходную и новую матрицы на экран. |
|
Найти среднее арифметическое положительных элементов двумерного массива чисел размерности . Массив и значение среднего арифметического вывести на экран. |
|
Найти минимальный элемент в двумерном массиве чисел размерности . Записать на место всех элементов строки, содержащей минимальный элемент, нули. Исходную и полученную матрицы вывести на экран. |
|
Дан двумерный массив чисел размерности . Вычислить сумму элементов четных и сумму элементов нечетных строк массива. Вывести на экран исходный массив и вычисленные суммы. |
|
В двумерном массиве чисел размерности найти количество элементов, которые равны . Вывести на экран исходный массив и координаты этих элементов. |
Образец выполнения работы
Задание 4.1 Согласно заданию элементы массива определяются по формуле a(i)=mod(37*a(i-1)+3, 64). Значение a(1) равно номеру варианта по списку групи.
Пусть номер варианта 10. Тогда a(1) =10;
Mod – функция вычисляющая остаток от деления. Аргументы и результат функции целые числа.
Например mod(5, 2), результат 1; mod(10, 4) результат 2.
N=4
X=a(1)
Do j=2, N
If (a(j)>x) then
X=a[j]
Endif
enddo
Исходя из условия, задания вычислим элементы массива:
a(2)=mod(37*a(1)+3,64)=mod(37*10+3,64)=mod(373,64)=53
a(3)=mod(37*a(2)+3,64)=mod(37*53+3,64)=mod(1961,64)=41
a(4)=mod(37*a(3)+3,64)=mod(37*41+3,64)=mod(1517,64)=45
Представим схему алгоритма фрагмента программы из задания 4.1. (рис. Л4.1).
Рис. Л4.1 Блок-схема фрагмента программы задания 4.1.
N=4, x=a(1)=10
Входим в цикл
J=2
A(2)>x ?
53>10 = True. Условие выполняется x=a(2)=53
J=3
A(3)>x?
41>53 = False Условие не выполняется
J=4
A(4)>x ?
45>53=False Условие не выполняется. Выход из цикла. После выполнения фрагмента программы x=53.
Фрагмент программы реализует алгоритм поиска максимального элемента в массиве.
Задание 4.2 Составить программу нахождения в одномерном массиве суммы элементов расположенных между первым и вторым отрицательными элементами массива. Ввести элементы массива А с клавиатуры.
Алгоритм решения задания 4.2. приведен на рис. Л4.2.
Рис. Л4.2 Блок-схема решения задания 4.2.
Программная реализация задачи 4.2:
Program lr4
Integer, parameter :: n=10
Real, dimension (1:n) :: a
Integer I,k1,k2
Real S
Do i=1, n
Write(*,’(a,i2,a,$)’),‘Enter a(’,I,’) =’
Read(*,*),a(i)
Enddo
I=1
Do while (a(i)>=0)
I=i+1
enddo
K1=i+1
i=k1
do while a(i)>=0
I=i+1
enddo
K2=i-1
S=0
do I=k1, k2
S=s+a(i)
enddo
Write(*,’(a,i2,a,i2,a,f5.1)’),‘1stnegative element number=’, k1,’ 2nd negative element number=’,k2,’ sum=’,s
End
Р
K2=i-1; s=0
A(1) = 2
A(2) = 3
A(3) = -3
A(4) = 7
A(5) = 9
A(6) = -3
A(7) = 5
A(8) = 14
A(9) = -23
A(10) = 8
1st negative element number= 3, 2nd negative element number= 6, sum= 16.0
Задание 4.3 Дан двумерный массив чисел размерности . Если сумма всех элементов массива меньше , то все отрицательные элементы необходимо заменить на положительные, в противном случае все отрицательные элементы уменьшить в два раза. Ввести исходный массив с клавиатуры. Вывести на экран исходный и преобразованный массивы.
Схема алгоритма решения задания 4.3 приведена на рис. Л4.3.
Рис. Л4.3 Блок-схема решения задания 4.3
Программная реализация задачи 4.3:
Program lr5
Integer, parameter :: n=3
Real, dimension (1..n,1..n) :: a
Real Sum, s
real I,j
Sum=0
!ввод и суммирование элементов массива
do i=1, N
do j=1, N
Write (*,10),‘a(’,I,’,’,j,’)=’
10 format(a,i2,a,i2,a)
Read(*,*), a(I,j)
Sum=sum+a(I,j)
Enddo
Enddo
!ввод числа S
Write(‘s=’);
Read(*,*),s
If (sum<s) then
!если сумма элементов меньше S меняем знак у !отрицательных элементов
do i=1, N
do j=1, N
If (a(I,j)<0) then
A(I,j)=abs(a(I,j))
else
do i=1, N
do j=1, N
If (a(I,j)<0) then
A(I,j)=a(I,j)/2
do i=1, N
Write(*,20),(a(I,j),j=1,n)
enddo
20 format(nf2.0)
End
Результаты работы программы
A( 1, 1)=1
A( 1, 2)=-2
A( 1, 3)=3
A( 2, 1)=-4
A( 2, 2)=5
A( 2, 3)=-6
A( 3, 1)=7
A( 3, 2)=-8
A( 3, 3)=9
S=23
1 2 3
4 5 6
7 8 9