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

Farionova_Fortran

.pdf
Скачиваний:
18
Добавлен:
15.02.2015
Размер:
2.71 Mб
Скачать

ЛАБОРАТОРНАЯ РАБОТА № 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]