Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Obschy_kurs / Fortran / Metod_Lr5_Fortran.doc
Скачиваний:
59
Добавлен:
21.02.2016
Размер:
215.04 Кб
Скачать
  1. Программирование задач обработки одномерных массивов

Рассмотрим на примерах основные этапы решения задач обработки одномерных массивов.

Пример№1. Задан вектор X из n элементов, где n≤10. Разработать схему алгоритма и составить программу для формирования нового вектора Y по следующим формулам:

I Математическое описание задачи

1. Дано: n, вектор X=Xi,

2. Основные зависимости, необходимые для решения задачи:

Yi=Xi-5 (1)

Yi=Xi+5 (2)

3. Ограничения:

Зависимость (1) выполняется, если Xi>5;

Зависимость (2) выполняется, если Xi5;

4. Найти: вектор Y=Yi, .

II Схема алгоритма для формирования нового вектора Y с краткими комментариями представлена на рис. 10.

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

Будет использовано 10 элементов вектора

Рис. 10. Схема алгоритма формирования нового вектора Y

III Таблица идентификации переменных и их типов

Математическая переменная

i

n

X

Y

Машинная переменная

i

n

X

Y

Тип

integer

real

IV. Текст программы на языке Фортран 90/95

program mas_1

implicit none

integer:: i, n=10

real, dimension(10) :: X,Y

X=(/5.,6.5,0.,-5.2,-6.8,7.1,3.,9.5,-2.2,10.7/) ! инициализация элементов массива

open (2, file='Rezult.txt')

write(2,'(5x,A)') '1. Пример вывода в виде таблицы

!Шапка таблицы

write (2,20); write (2,21); write (2,20)

do i=1,n

if (X(i)>5) then

Y(i)=X(i)-5

else

Y(i)=X(i)+5

end if

write(2,22) i,X(i),Y(i) ! вывод i-го элемента массивов X и Y

end do

write (2,20) !Низ таблицы

write(2,24) '2. Пример вывода в виде циклического списка

write(2,23) (i, X(i), i, Y(i), i=1,n)

! Используемые форматы

20 format (5x,26('-'))

21 format (5x,'| I | X(I) | Y(I) |')

22 format (5x,'|',i4,' |',f6.1,' |',f6.1,' |')

23 format (5x,'X(',i2,')=',f5.1,4x,'Y(',i2,')=',f5.1)

24 format (3x, A, /)

close(2)

end

V Результаты выполнения программы.

Содержимое файла 'Rezult.txt':

Пример№2. В массиве целых чисел С={Сi}, i= вычислить количество и сумму чётных, положительных элементов. Если в массиве таких элементов не окажется, то вывести об этом сообщение Исходный массив создать на интервале [-10,10] с помощью встроенной функции для генерации случайных чисел. Количество элементов в массиве n25 задать произвольно.

I Математическое описание задачи

Введем обозначения: к – количество четных, положительных элементов исходного массива; S – их сумма.

1. Дано: n, {Сi},i=

2. Основные зависимости:

к=к+1 (1)

S= S+ Сi (2)

3. Ограничения:

количество элементов в массиве n25;

зависимости (1) и (2) выполняются, если i-й элемент массива Сi >0 и четный;

если в массиве не окажется четных положительных элементов, то вывести об этом сообщение.

4. Найти: к и S.

Рекомендация: Для проверки четности элемента можно использовать встроенную функцию mod(x, y). Эта функция возвращает остаток от деления x на y. Результат имеет один знак с x.

II Схема алгоритма представлена на рис. 11.

III Таблица идентификации переменных и их типов

Математическая переменная

i

n

k

S

С

Машинная переменная

i

n

k

S

С

Тип

integer

Рис. 11. Схема алгоритма

IV Текст программы на языке Фортран 90/95

V Результаты выполнения программы.

Протокол решения задачи.

n=? ! подсказка о вводе кол-ва элементов массива

15  ! значение, введенное с клавиатуры

m=? ! подсказка о вводе значения для инициализации датчика

! случайных чисел

999 ! введено произвольное целое число

Press any key to continue ! Вывод системного сообщения

Содержимое файла 'rez.txt':

Содержание отчета по лабораторной работе

  1. Тема и цель лабораторной работы;

  2. Условия задач, выданные преподавателем;

  3. Математическое описание задач.

  4. Схемы алгоритмов.

  5. Тексты программ.

  6. Листинги с текстом программ (с комментариями) и результатами выполнения.

  7. Анализ результатов.

Контрольные вопросы.

  1. Какие типовые алгоритмы используются при обработке массивов?

  2. Как подсчитать сумму (произведение) всех элементов массива?

  3. Как подсчитать сумму (произведение) особых элементов массива?

  4. Какой принцип используется при подсчете количества особых элементов массива?

  5. Как организуется вычисление среднего арифметического элементов массива?

  6. Как организуется вычисление среднего геометрического элементов массива?

  7. На каком принципе основан поиск максимального (минимального) элементов массива?

  8. На каком принципе основан поиск максимального (минимального) среди особых элементов массива?

  9. Назначение встроенной функции mod(x,y)

  10. Использование встроенной функции mod(x,y) для проверки кратности чисел.

  11. Назначение встроенной функции rаn(S);

Для справки:

Функция ran(S) возвращает псевдослучайное вещественное число из интервала от 0 до 1. Формальный аргумент S должен быть переменной целого типа. Перед обращением к функции ran(S) этой переменной нужно присвоить произвольное целое число, которое используется для инициализации формирования псевдослучайных чисел. Если при повторных запусках программы на выполнение значение S не изменять, то каждый раз будет формироваться одна и та же последовательность псевдослучайных чисел. Это удобно при отладке программы.

Внимание! В качестве фактического аргумента функции ran() можно использовать только целочисленную переменную.

Чтобы получить псевдослучайное число на интервале от a до b следует использовать обращение к функции ran(S) в виде: a + ran(S) (b-a).

Для получения целочисленных псевдослучайных чисел достаточно к результату, возвращаемому функцией ran( ) применить функцию int( ), которая возвращает целую часть вещественного числа.

Примеры создания псевдослучайных чисел:

a) вещественное число на интервале от -5 до 15:

S=15 (произвольное целое число) B =-5+ran(S)*20;

b) целое число на интервале от 20 до 35

r=5 (произвольное целое число) X:=int(20+ran(r)*15;

12

ст. преп. каф. ЭВМ Скабалланович Т.И.

Соседние файлы в папке Fortran