Farionova_Fortran
.pdfЛАБОРАТОРНАЯ РАБОТА № 4
Номер варианЗадание
та
1Дан двухмерный массив чисел A размерности не более 10×15. Составить программу определения максимального значения в нечетных столбцах
2Дан двухмерный массив чисел A размерности k × l . Определить номер строки, содержащей максимальное число элементов, удо-
влетворяющих условию aij ≥ p . Вывести на экран этот номер и исходный массив
3Дан двухмерный массив чисел A размерности k × l . Найти минимальный элемент в каждой из k строк этого массива. Создать из найденных элементов одномерный массив B . Вывести на экран массивы A и B
4Найти количество элементов двухмерного массива A размер-
|
ности |
k × l , |
|
удовлетворяющих условию d1 < aij < d2 . |
Вывести на |
||||
|
экран эти элементы и исходный массив |
|
|
||||||
5 |
Составить программу для замены четных строк матрицы А соот- |
||||||||
|
ветствующими строками матрицы В. Матрицы имеют одинаковую |
||||||||
|
размерность, не превышающую 8×12 |
|
|
||||||
6 |
Даны два двухмерных массива A и B порядка k × l . Сформиро- |
||||||||
|
вать массив |
C , |
элементы которого определяются |
по формуле |
|||||
|
max(a |
ij |
,b ) , |
a |
ij |
≥ 0 |
|
|
|
|
|
|
ij |
|
|
|
C |
||
|
cij = |
|
|
,bij ) , |
aij |
. Вывести на печать массив |
|||
|
min(aij |
< 0 |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
7 |
Проверить диагональность квадратной матрицы |
A |
порядка k . |
||||||
|
Матрица диагональная, если aij = 0 при i ≠ j . Напечатать сообще- |
||||||||
|
ние “МАТРИЦА ДИАГОНАЛЬНАЯ” или “МАТРИЦА НЕ ДИАГО- |
||||||||
|
НАЛЬНАЯ”. Исходный массив A вывести на печать |
|
|||||||
8 |
Исключить из матрицы A порядка k × l отрицательные элемен- |
||||||||
|
ты, записав на их место нули. Подсчитать количество произведен- |
||||||||
|
ных замен. Вывести на печать получившуюся матрицу |
|
|||||||
9 |
Составить программу для вычисления матрицы С, элементы ко- |
||||||||
|
торой определяются по формуле Cij = 3Xij + 5Yij |
|
|
||||||
10 |
Подсчитать количество столбцов в матрице |
A |
размерности |
||||||
|
k × l , которые содержат только положительные элементы. Вывести |
||||||||
|
результат подсчета и исходную матрицу на экран |
|
|
82
Разработка и реализация программ с использованием массивов.
Продолж. таблицы
Номер варианЗадание
та
11Разработать программу, вычисляющую сумму отрицательных элементов в каждом столбце матрицы A размером до 9×12. Результаты записать в одномерный массив
12Дана квадратная матрица A порядка k. Определить максималь-
ный по модулю элемент каждой строки. Результаты записать в одномерный массив
13Дана квадратная матрица A порядка k . Найти сумму элементов матрицы, расположенных над главной диагональю. Вывести на экран исходный массив и величину вычисленной суммы
14Найти количество элементов двухмерного массива A размерно-
сти k×l, удовлетворяющих условию aij < d, и количество элементов, удовлетворяющих условию aij > 2d. Вывести результат подсчета и исходную матрицу на экран
15Даны два одномерных массива A и B, которые содержат по l элементов. Образовать двухмерный массив С размерности l×l, элементы которого определяются соотношением В:
ai + max (i = j), |
|
ci, j = |
(i ≠ j), |
ai +bj |
где max – максимальный элемент массива
16Найти минимальный элемент главной диагонали квадратной матрицы A порядка k, разделить на него все элементы матрицы, образовав новую матрицу той же размерности. Вывести исходную и новую матрицы на экран
17Найти среднее арифметическое положительных элементов двухмерного массива чисел A размерности k×l. Массив A и значение среднего арифметического вывести на экран
18Найти минимальный элемент в двухмерном массиве чисел A размерности k×l.
Записать на место всех элементов строки, содержащей минимальный элемент, нули. Исходную и полученную матрицы вывести на экран
19Дан двухмерный массив чисел A размерности k×l. Вычислить сумму элементов четных и сумму элементов нечетных строк массива. Вывести на экран исходный массив A и вычисленные суммы
20В двухмерном массиве чисел A размерности k×l найти коли-
чество элементов, которые равны d1. Вывести на экран исходный массив A и координаты этих элементов
83
|
|
ЛАБОРАТОРНАЯ РАБОТА № 4 |
|
Образец выполнения работы |
|||
Задание 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). |
|
N = 4; x = a1 |
Начальные данные: |
||
N=4, x=a(1)=10 |
|||
|
J = 2, N Нет |
||
|
Входимвцикл: |
||
Нет |
Да |
J=2 |
|
Aj > x |
A(2)>x ? |
||
|
Да |
53>10 = True. Условиевыполняется x=a(2)=53 |
|
|
X = aj |
J=3 |
|
|
|
A(3)>x? |
|
|
|
41>53 = False Условие не выполняется |
|
|
|
J=4 |
|
Рис. Л4.1. Блок-схема |
A(4)>x ? |
||
45>53=False Условие не выполняется. Выход |
|||
фрагмента програм- |
из цикла. После выполнения фрагмента програм- |
||
мызадания4.1 |
мы x=53. |
||
84 |
|
|
Разработка и реализация программ с использованием массивов.
Фрагмент программы реализует алгоритм поиска максимального элемента в массиве.
Задание 4.2. Составить программу нахождения в одномерном мас-
сиве суммы элементов, расположенных между |
|
|
|
|
первым и вторым отрицательными элементами |
|
Начало |
|
|
массива. Ввести элементы массива А с клавиа- |
|
|
|
– |
туры. |
|
I = 1, n |
||
|
|
|||
Алгоритм решения задания 4.2 приведен на |
|
+ |
|
|
рис. Л4.2. |
|
Ввести ai |
|
|
Программная реализация задачи 4.2: |
|
|
|
|
|
|
|
|
Program |
lr4 |
:: n=10 |
|
|
Integer, |
parameter |
I: = 1 |
|
|
Real, dimension (1:n) :: a |
|
– |
||
Integer |
I,k1,k2 |
|
ai > 0 |
|
Real S |
n |
|
+ |
|
Do i=1, |
|
I = i + 1 |
|
|
Write(*,'(a,i2,a,$)'),'Enter a(',I,') =' |
|
|
||
Read(*,*),a(i) |
|
|
|
|
Enddo |
|
|
k1 = i + 1; i = k1 |
|
I=1 |
|
|
|
|
Do while |
(a(i)>=0) |
|
ai > 0 |
– |
I=i+1 |
|
|
+ |
|
enddo |
|
|
I = i + 1 |
|
K1=i+1 |
|
|
|
|
i=k1 |
|
|
|
|
do while |
a(i)>=0 |
|
k2 = i – 1; s = 0 |
|
I=i+1 |
|
|
|
– |
enddo |
|
|
I = k1, k2 |
|
K2=i-1 |
|
|
+ |
|
S=0 |
k2 |
|
S = s + ai |
|
do I=k1, |
|
|
|
|
S=s+a(i) |
|
Вывод k1, k2, s |
||
enddo |
|
|
|
|
Write(*,'(a,i2,a,i2,a,f5.1)'),'1stnegative& |
Конец |
|
||
element number=', k1,' 2nd negative& |
Рис. Л4.2. Блок-схема |
|||
element number=',k2,' |
sum=',s |
|||
End |
|
|
решениязадания4.2 |
85
ЛАБОРАТОРНАЯ РАБОТА № 4
Результаты работы программы:
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. Дан двухмерный массив чисел А размерности n × n. Если сумма всех элементов массива меньше S, то все отрицательные элементы необходимо заменить положительными, в противном случае все отрицательные элементы уменьшить в два раза. Ввести исходный массив с клавиатуры. Вывести на экран исходный и преобразованный массивы.
Схема алгоритма решения задания 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
86
Разработка и реализация программ с использованием массивов.
!ввод числа 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
87
ЛАБОРАТОРНАЯ РАБОТА № 4
|
|
|
Начало |
|
|
|
|
|
|
Sum = 0 |
|
|
|
|
|
|
I = 1, N |
– |
|
|
|
|
|
+ |
– |
|
|
|
|
|
J = 1, N |
|
|
|
|
|
|
+ |
|
|
|
|
|
|
Ввести aij |
|
|
|
|
|
|
Sum = Sum + aij |
|
|
|
|
|
|
Ввести S |
|
|
|
|
|
– |
Sum < S |
+ |
|
|
|
I = 1, N |
– |
|
I = 1, N |
– |
|
|
+ |
– |
|
+ |
|
– |
|
J = 1, N |
|
J = 1, N |
|
||
– |
+ |
+ |
– |
+ |
|
+ |
ai,j < 0 |
ai,j < 0 |
|
||||
|
|
ai,j = ai,j/2 |
|
|
ai,j |
= ai,j |
I = 1, N |
– |
+ |
– |
J = 1, N |
|
+ |
|
Вывести ai,j |
|
Конец |
|
Рис. Л4.3. Блок-схемарешениязадания4.3
88
Лабораторная работа № 5
Тема: Разработка и реализация программ с использованием фай-
лового типа данных.
Цельработы: получитьнавыкисоставленияиреализациипрограмм с использованием внешних файлов средствами языка Фортран.
Задание к лабораторной работе
Составитьпрограммупреобразованиядвухмерногомассивасогласно варианту задания (см. таблицу). Исходная матрица считывается из файла исходных данных "data.txt". Вывод осуществляется в файл результатов "rez.txt".
Номер |
|
|
|
|
|
|
вари- |
|
|
Задание |
|
|
|
анта |
|
|
|
|
|
|
1 |
В текстовый файл записан двухмерный массив чисел |
A размерности |
||||
|
k × l . |
Вычислить число строк, в которых содержится больше |
r |
|||
|
(r < l) |
элементов, удовлетворяющих условию aij ≥ p . Номера этих |
||||
|
строк и исходный массив поместить в новый файл |
|
|
|||
2 |
В текстовый файл записан двухмерный массив чисел |
A размерности |
||||
|
k × l . Определить номер строки, содержащей максимальное число |
|||||
|
элементов, удовлетворяющих условию |
aij ≥ p . Полученный номер |
||||
|
и исходный массив поместить в новый файл |
|
|
|||
3 |
В текстовый файл записан двухмерный массив чисел |
A размерности |
||||
|
k × l . Найти минимальный элемент в каждой из |
k строк этого |
||||
|
массива. Создать из найденных элементов одномерный массив |
B . |
||||
|
Массивы A и B записать в новый файл |
|
|
|
||
4 |
В текстовый файл записан двухмерный массив чисел |
A размерности |
||||
|
k × l . |
Найти количество |
элементов |
двухмерного |
массива |
A , |
|
удовлетворяющих условию |
d1 < aij < d2 . Найденные элементы, |
их |
количество и исходный массив записать в новый файл
5 В текстовый файл записан двухмерный массив чисел A размерности k × l . Найти номер строки матрицы A , имеющей максимальную сумму элементов. Исходный массив A , строку с максимальной суммой элементов и саму сумму поместить в новый файл
89
|
|
|
|
|
|
|
|
|
|
ЛАБОРАТОРНАЯ РАБОТА № 5 |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Продолж.таблицы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Номер |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
вари- |
|
|
|
|
|
|
|
Задание |
|
|
|
|
|
|
|
|
|
||||
анта |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
В текстовый файл записаны два двухмерных массива A и B порядка |
||||||||||||||||||||
|
k × l . Сформировать массив |
C |
, элементы которого определяются |
||||||||||||||||||
|
|
|
|
max(a |
ij |
,b |
) |
– a |
ij |
≥ 0 |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
ij |
)– a |
|
|
|
|
|
|
|
|
|
|
|||
|
по |
формуле |
cij = min(a ,b |
|
< 0 |
. |
Массив |
|
C |
поместить |
|||||||||||
|
|
|
|
|
ij |
|
ij |
|
ij |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
в новый текстовый файл |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
7 |
В текстовый файл записан двухмерный массив чисел |
A порядка k . |
|||||||||||||||||||
|
Проверить |
диагональность |
|
квадратной |
матрицы |
A . |
Матрица |
||||||||||||||
|
диагональная, |
если aij |
= 0 |
|
при i ≠ j . |
В |
новый |
текстовый |
файл |
||||||||||||
|
записать исходный массив и сообщение: “МАТРИЦА |
||||||||||||||||||||
|
ДИАГОНАЛЬНАЯ” или “МАТРИЦА НЕ ДИАГОНАЛЬНАЯ” |
|
|
|
|||||||||||||||||
8 |
В текстовый файл записан двухмерный массив чисел |
A размерности |
|||||||||||||||||||
|
k × l . Исключить из матрицы |
A отрицательные элементы, записав |
|||||||||||||||||||
|
на их место нули. Подсчитать количество произведенных замен. |
||||||||||||||||||||
|
Поместить в новый текстовый файл исходную матрицу, |
||||||||||||||||||||
|
получившуюся матрицу и найденное число замен |
|
|
|
|
|
|
|
|||||||||||||
9 |
В текстовый файл записан двухмерный массив чисел |
A размерности |
|||||||||||||||||||
|
k × l . Подсчитать количество строк в матрице, которые содержат |
||||||||||||||||||||
|
только положительные элементы. В новый файл поместить |
||||||||||||||||||||
|
исходную матрицу и найденные строки |
|
|
|
|
|
|
|
|
|
|||||||||||
10 |
В текстовый файл записан двухмерный массив чисел |
A размерности |
|||||||||||||||||||
|
k × l . Подсчитать количество столбцов в матрице, которые содержат |
||||||||||||||||||||
|
только отрицательные элементы. В новый файл поместить |
||||||||||||||||||||
|
исходную матрицу и номера найденных столбцов |
|
|
|
|
|
|
|
|||||||||||||
11 |
В текстовый файл записаны два двухмерных массива |
A |
и |
B |
|||||||||||||||||
|
размерности k × l . Образовать новый массив C той же размерности, |
||||||||||||||||||||
|
элементы которого определяются соотношением |
c |
= |
min{aij ,bij } |
. |
||||||||||||||||
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ij |
|
max{aij ,bij } |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
Поместить в новый текстовый файл исходные и полученный |
||||||||||||||||||||
|
массивы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
В |
текстовый |
файл записана |
квадратная |
матрица |
A порядка |
k . |
||||||||||||||
|
Определить |
максимальный |
|
по модулю элемент каждой строки |
|||||||||||||||||
|
и поменять его местами с |
диагональным элементом. |
Исходную |
||||||||||||||||||
|
и полученную матрицы записать в новый текстовый файл |
|
|
|
|
90
Разработка и реализация программ с использованием файлового типа данных.
Продолж. таблицы
Номер вариЗадание анта
13В текстовый файл записана квадратная матрица A порядка k . Определить минимальный элемент каждой строки и поменять его местами с соответствующим элементом побочной диагонали. Исходную и полученную матрицы записать в новый текстовый файл
14В текстовый файл записаны два одномерных массива A и B размерности l . Образовать двухмерный массив C размерности l × l ,
элементы |
|
которого |
определяются |
соотношением |
|
ai + max{bi } (i = j) |
Исходные одномерные |
массивы и |
|||
ci, j = a |
+b |
|
(i ≠ j) . |
||
i |
|
j |
|
|
|
полученный двухмерный массив поместить в новый текстовый файл
15В текстовый файл записан двумерный массив чисел A порядка k . Найти минимальный элемент главной диагонали квадратной матрицы А, разделить на него все ее элементы, образовав новую матрицу той же размерности. Исходную и новую матрицы поместить в текстовый файл результатов
16В текстовый файл записан двумерный массив чисел A размерности
k × l . Найти среднее арифметическое положительных элементов данного массива чисел. Массив A и значение среднего арифметического поместить в новый файл
17В текстовый файл записан двумерный массив чисел A порядка k. Записать на месте всех элементов, лежащих на диагоналях матрицы, единицу, образовав новую матрицу. Обе матрицы записать в новый текстовый файл
18В текстовый файл записан двумерный массив чисел A размерности
k × l . Найти минимальный элемент в этом массиве. Записать на место всех элементов строки, содержащей минимальный элемент, нули. Исходную и полученную матрицы поместить в новый файл
19 В текстовый файл записан двумерный массив чисел A размерности k × l . Образовать из положительных элементов массива A одномерный массив B. Оба массива записать в новый текстовый файл
20В текстовый файл записан двухмерный массив чисел A порядка k. Определить максимальный элемент этой матрицы и сформировать новую квадратную матрицу B того же порядка, которая образуется если все элементы матрицы A умножить на этот максимальный элемент. Исходную и полученную матрицы поместить в новый файл
91