Векторы
Описание файла
Документ из архива "Векторы", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. .
Онлайн просмотр документа "Векторы"
Текст из документа "Векторы"
1)Постановка задачи (ПЗ):
Если ни в одном из векторов X(15), Y(20) нет повторяющихся элементов, изменить индексацию того вектора, где номер минимального элемента меньше, на обратную.
Подпрограмма pp1 проверяет вещественный вектор на отсутствие/наличие повторяющихся элементов
Подпрограмма pp2 находит номер минимального элемента вещественного вектора
Подпрограмма pp3 инвертирует (переставляет наоборот) элементы вещественного вектора
2)Таблица величин головного модуля (ТВ):
Класс | Имя | Смысл | Структура | Тип |
Исходные данные | Х | исходный вектор | {X}15 | вещественное |
Y | исходный вектор | {Y}20 | вещественное | |
Результат | Х или Y | Инвертированный вектор | {X}15 или {Y}20 | вещественное |
Промежуточные данные | povtorX | Признак наличия повторяющихся элементов в векторе Х | простая переменная | логическое |
povtorY | Признак наличия повторяющихся элементов в векторе Y | простая переменная | логическое | |
Nx | номер минимального элемента вектора Х | простая переменная | целое | |
Ny | номер минимального элемента вектора Y | простая переменная | целое |
Таблица величин pp1 :
Класс | Имя | Смысл | Структура | Тип |
Исходные данные | A | исходный вектор | {A}k | вещественное |
k | длина вектора A | простая переменная | целое | |
Результат | p | Признак наличия повторяющихся элементов в векторе (флажок) | простая переменная | логическое |
Промежуточные данные | j, i | Промежуточный номер элемента вектора | простая переменная | целое |
Таблица величин pp2 :
Класс | Имя | Смысл | Структура | Тип |
Исходные данные | A | исходный вектор | {A}k | вещественное |
k | длина массива A | простая переменная | целое | |
Результат | min | минимальный элемент вектора | простая переменная | вещественное |
n | номер минимального элемента вектора | простая переменная | целое | |
Промежуточные данные | i | Текущий номер элемента вектора | простая переменная | целое |
Таблица величин pp3 :
Класс | Имя | Смысл | Структура | Тип |
Исходные данные | A | исходный вектор | {A}k | вещественное |
k | длина массива A | простая переменная | целое | |
Результат | A | Инвертированный вектор | {A}k | вещественное |
Промежуточные данные | m | Переменная для обмена | простая переменная | вещественное |
i | Текущий номер элемента вектора | простая переменная | целое |
3)Аномалии: нет
4) Алгоритм
Головная программа
Подпрограмма pp1
Подпрограмма pp1 проверяет вещественный вектор на отсутствие повторяющихся элементов
Подпрограмма pp2
Подпрограмма pp2 находит номер минимального элемента вещественного вектора
Подпрограмма pp3
Подпрограмма pp3 инвертирует (переставляет наоборот) элементы вещественного вектора
5) Текст программы:
logical function pp1(A,k) !povtorenie
dimension A(k)
real A
integer i,j,k
logical p
povtor=.false.
i=1
do while (i<=(k-1).and.(.not.p))
j=i+1
do while (j<=k.and.(.not.p))
if(a(i)==a(j)) then
p=.true.
end if
j=j+1
end do
i=i+1
end do
pp1=p
end
integer function pp2(A,k) !minimum
dimension A(k)
real A,min
integer i,k,n
min=a(1)
n=1
do i=2,k
if(a(i)<min) then
min=a(i)
n=i
end if
end do
pp2=n
end
subroutine pp3(A,k) !index
dimension A(k)
real A,m
integer i,k
do i=1,k/2
m=A(i)
A(i)=A(k-i+1)
A(k-i+1)=m
end do
return
end
dimension X(15),Y(20)
real X,Y
integer i,nx,ny,pp2
logical pp1,povtorx,povtory
write(*,1)' vvedite vector X(15)'
1 format (/A22)
read(*,*)(X(i),i=1,15)
write(*,1)' vvedite vector Y(20)'
read(*,*)(Y(i),i=1,20)
write(*,3)' ISHODNIY VEKTOR X'
3 format((//A19))
do i=1,15
write (*,"(x,F5.1,$)")X(i)
enddo
write(*,3)' ISHODNIY VEKTOR Y'
do i=1,20
write (*,"(x,F5.1,$)")Y(i)
enddo
povtorx=pp1(X,15)
if (povtorx) then
write(*,2)' v vectore X imeyutsya povtoryayuschiesya elementy'
goto 10
else
povtory=pp1(Y,20)
end if
if (povtory) then
write(*,2)' v vectore Y imeyutsya povtoryayuschiesya elementy'
2 format(//A50/)
goto 10
else
Nx=pp2(X,15)
write(*,40)Nx
40 format((//' nomer min. elementa vectora Nx=',I2))
Ny=pp2(Y,20)
write(*,41)Ny
41 format((' nomer min. elementa vectora Ny=',I2/))
end if
if(Nx<Ny) then
call pp3(X,15)
write(*,4)' INVERTIROVANNIY VEKTOR X'
4 format(/A26/)
do i=1,15
write (*,"(x,F5.1,$)")X(i)
enddo
goto 10
else
if(Nx>Ny) then
call pp3(Y,20)
write(*,4)' INVERTIROVANNIY VEKTOR Y'
do i=1,20
write (*,"(x,F5.1,$)")Y(i)
enddo
goto 10
else
write(*,5)' nomera minimalnih elementov vektorov X i Y sovpadayut'
5 format(/A58/)
endif
endif
10 continue
end
6) Тесты: