Контрольные по математике | Основы информационных технологий и программирования | Matematiku5
Вузы по математике Готовые работы по математике Как писать работы по математике Примеры решения задач по математике Решить задачу по математике online

Основы информационных технологий и программирования


ДИНАМИЧЕСКИЕ МАССИВЫ

пояснительная записка к расчетному заданию

по дисциплине «Основы информационных технологий и программирования»

Цель работы

Изучение структуры и правил оформления модуля; создание программ с использованием модуля; изучение способов передачи данных в модули.

Постановка задачи

1.  Выполнить задание с использованием процедур.

2.  Исходные данные (кроме размерности массивов) ввести из текстового файла, который представить вместе с листингом программы и результатами счета. Ввод данных оформить как процедуру.

3.  Решение задачи оформить в виде процедуры.

4.  Исходную матрицу и результаты вывести в другой текстовый файл. Вывод данных в файл оформить в виде процедуры.

5.  Весь обмен данными между основной программой и процедурами организовать через список формальных/фактических параметров.

Вариант № 1

1.  Преобразовать вещественный массив Y(N)={0.2, -7.8, 2.5, -6.3, 1.3, 5.9, 4.4, 7.8, 0.3} в массив V по формуле Vj= cos Yj, где N=9. Оформить подпрограмму преобразования массива Y в массив V.

2.  Заменить положительные элементы массива V их кубами, а отрицательные – наименьшим элементом массива; расположить элементы в порядке возрастания. Оформить подпрограмму выполнения указанных действий над массивом A (N).

3.  Преобразовать одномерный массив V в двумерный W размером 3х3: разрезать условно массив V на три полоски; поместить затем под первой полоской вторую, под второй — третью. Использовать при этом оформленную подпрограмму преобразования одномерного массива A(n) в двумерный массив B(m, m).

4.  Составить массив R из произведений элементов каждого столбца матрицы W. Оформить подпрограмму выполнения над массивом B(m, m) указанных действий.

Содержание работы

1.  Исходный текст модуля.

module Module_V1

implicit none

CONTAINS

!**************************************

subroutine ReadFile(A, N,M)

real, intent (OUT)::A(:)

integer, intent(OUT)::N, M; integer i;

open(unit=1,file=’DZ1.txt’)

read(1,*) N, M

read(1,*) (A(i),i=1,N)

close(1)

end subroutine ReadFile

!**************************************

subroutine Proc1(Y, V,N)

real, intent (in)::Y(:)

real, intent (out)::V(:)

integer, intent(in)::N; integer i;

do i=1,N

V(i)=cos(Y(i))

enddo

end subroutine Proc1

!**************************************

subroutine Proc2(A, Anew, Amin, N)

real, intent (in)::A(:)

real, intent (out)::Anew(:)

real, intent (out)::Amin

integer, intent(in)::N; integer i;

Amin=A(1)

do i=1,N

if(A(i)<Amin) Amin=A(i)

enddo

do 2 i=1,N,1

if(A(1).GT.0) then

Anew(i)=A(i)**3

else

Anew(i)=Amin

endif

2 continue

end subroutine Proc2

!**************************************

subroutine Proc3(A, W,N, M)

real, intent (in)::A(:)

real, intent (out)::W(:,:)

integer, intent(in)::N, M; integer::i, j,k=0;

do i=1,M

do j=1,M

k=k+1

W(i, j)=A(k)

enddo

enddo

end subroutine Proc3

!**************************************

subroutine Proc4(W, R,M)

real, intent (out)::R(:)

real, intent (in)::W(:,:)

integer, intent(in)::M;

integer::i, j;

real P;

do j=1,M

P=1

do i=1,M

P=P*W(i, j)

enddo

R(j)=P

enddo

end subroutine Proc4

!**************************************

subroutine WriteFile(Y, V,Vnew, N,Vmin, W,R, M)

real, intent (in)::Y(:),V(:),Vnew(:),R(:)

real, intent (in)::W(:,:)

integer, intent(in)::N, M;

real, intent (in)::Vmin

integer::i, j;

open(unit=2,file="DZ1.OUT")

write(2,*) "Домашнее задание №1"

write(2,*) "Выполнили: Байбикова М. А., Снурницын В. А., Сургов А. И., Клемешов Р. С."

write(2,*) "Исходный массив Y:"

write(2,'(100F8.4)’) (Y(i),i=1,N)

write(2,*) "Пункт 1: V="

write(2,'(100F8.4)’) (V(i),i=1,N)

write(2,*) "Пункт 2: Vnew="

write(2,'(100F8.4)’) (Vnew(i),i=1,N)

write(2,'(A, F8.4)’) ‘Vmin = ‘,Vmin

write(2,*) "Пункт 3 : W="

DO I=1,M

Write(2,'(100F8.4)’) (W(I, J),J=1,M)

ENDDO

write(2,*) "Пункт 4: R="

write(2,'(100F8.4)’) (R(i),i=1,M)

close(2)

end subroutine WriteFile

!**************************************

end module Module_V1

2.  Исходный текст главной программы:

program DZ1

use Module_V1

implicit none

real, ALLOCATABLE::Y(:),V(:),Vnew(:),R(:),W(:,:)

integer::N, M;

real::Vmin

ALLOCATE(Y(100))

CALL ReadFile(Y, N,M)

ALLOCATE(V(N),Vnew(N),R(M),W(M, M))

CALL Proc1(Y, V,N)

CALL Proc2(V, Vnew, Vmin, N)

CALL Proc3(V, W,N, M)

CALL Proc4(W, R,M)

CALL WriteFile(Y, V,Vnew, N,Vmin, W,R, M)

DEALLOCATE(Y, V,Vnew, R,W)

end program DZ1

3.  Файл исходных данных.

4.  Файл с результатами расчета.

5.  Выводы:

·  закреплены навыки работы с подпрограммами и текстовыми файлами данных;

·  изучена техника программирования с использованием динамических массивов;

·  создана программа с использованием модуля и динамических массивов;

·  изучены способы передачи данных в модули.

Наташа

Автор

Наташа — контент-маркетолог и блогер, но все это не мешает ей оставаться адекватным человеком. Верит во все цвета радуги и не верит в теорию всемирного заговора. Увлекается «нефрохиромантией» и тайно мечтает воссоздать дома Александрийскую библиотеку.

Распродажа дипломных

 Скидка 30% по промокоду Diplom2020

А ты боишься COVID-19?

 Пройди опрос и получи промокод