Информатика (экзамен билеты) Э-4 / 2 / Zadacha_2_2013
.docЗадача 2
2. Дана целочисленная матрица: А(4,5).
Если в матрице есть хотя бы один столбец без отрицательных элементов, найти индексы минимального положительного элемента. В противном случае определить количество нечетных элементов в матрице.
РР1 – определить, в матрице есть ли хотя бы один столбец без отрицательных элементов.?
РР2 – найти индексы минимального положительного элемента.
+РР3 – определить количество нечетных элементов в матрице.
РР1 – определить, в матрице есть ли хотя бы один столбец без отрицательных элементов
класс |
Имя |
Смысл |
Тип |
Структура |
входные |
x |
Имя матрицы |
Целое |
{X}n,m |
|
n |
Количество строк |
Целое |
Простая переменная |
|
m |
Количество столбцов |
Целое |
Простая переменная |
результат |
p |
флажок |
логическое |
Простая переменная |
промежуточные |
I |
Номер текущей строки |
Целое |
Простая переменная |
|
J |
Номер текущего столбца |
Целое |
Простая переменная |
-
logical function pp1 (x,n,m)
dimension x(n,m)
integer x,n,m,i,j
logical p
p=.false.
j=1
do while (j.le.m.and..not.p)
p=.true.
i=1
do while (i.le.n.and.p)
if (x(i,j).lt.0) then
p=.false.
endif
i=i+1
enddo
j=j+1
enddo
pp1=p
end
РР2 – найти индексы минимального положительного элемента.
класс |
Имя |
Смысл |
Тип |
Структура |
входные |
x |
Имя матрицы |
Целое |
{X}n,m |
|
n |
Количество строк |
Целое |
Простая переменная |
|
m |
Количество столбцов |
Целое |
Простая переменная |
результат |
im |
Номер строки минимального положительного элемента |
Целое |
Простая переменная |
|
jm |
Номер столбца минимального положительного элемента |
Целое |
Простая переменная |
промежуточные |
I |
Номер текущей строки |
Целое |
Простая переменная |
|
J |
Номер текущего столбца |
Целое |
Простая переменная |
|
Xm |
Минимальный положительный элемент |
Целое |
Простая переменная |
-
subroutine pp2 (x,n,m,im,jm)
dimension x(n,m)
integer i,j,x,n,m,jm,im,xm
im=0
jm=0
i=1
do while (i.le.n.and.im.eq.0)
j=1
do while (j.le.m.and.jm.eq.0)
if (x(i,j).gt.0) then
xm=x(i,j)
im=i
jm=j
endif
j=j+1
enddo
i=i+1
enddo
i=i-1
do while (i.le.n)
j=1
do while (j.le.m)
if (x(i,j).gt.0.and.x(i,j).le.xm) then
xm=x(i,j)
im=i
jm=j
endif
j=j+1
enddo
i=i+1
enddo
end
РР3 – определить количество нечетных элементов в матрице
класс |
Имя |
Смысл |
Тип |
Структура |
входные |
x |
Имя матрицы |
Целое |
{X}n,m |
|
n |
Количество строк |
Целое |
Простая переменная |
|
m |
Количество столбцов |
Целое |
Простая переменная |
результат |
k |
Количество нечетных элементов |
Целое |
Простая переменная |
промежуточные |
I |
Номер текущей строки |
Целое |
Простая переменная |
|
J |
Номер текущего столбца |
Целое |
Простая переменная |
-
subroutine pp3 (x,n,m,k)
dimension x(n,m)
integer x,n,m,i,j,k
k=0
do i=1,n
do j=1,m
if (x(i,j)/2*2.ne.x(i,j)) then
k=k+1
endif
enddo
enddo
end
(главный модуль)
класс |
Имя |
Смысл |
Тип |
Структура |
входные |
A |
Имя матрицы |
Целое |
{A}4,5 |
выходные |
im |
Номер строки минимального положительного элемента |
Целое |
Простая переменная |
|
jm |
Номер столбца минимального положительного элемента |
Целое |
Простая переменная |
|
h |
Количество нечетных элементов |
Целое |
Простая переменная |
промежуточные |
I |
Номер текущей строки |
целое |
Простая переменная |
|
J |
Номер текущего столбца |
целое |
Простая переменная |
|
q |
флажок |
логическое |
Простая переменная |
-
program pppp
dimension a(4,5)
integer a,i,j,im,h
logical q,pp1
data a/ 54, -2, 33, 19, 55, 11, 92, -3, 94, 95, 16, 22, 33, -4, 10, 11, -2, 33, 44, 55/
!Write(*,*)'vvedite matricy 4 na 5 po formaty XX'
!read(*,31) ((A(I,j),j=1,5),i=1,4)
write(*,*)'matrica A'
write(*,31)((A(i,j),j=1,5),i=1,4)
31 format((1x,5(i2,1x)))
q=pp1(a,4,5)
if (q) then
call pp2(a,4,5,im,jm)
45 format (1x,' indexi min pologitelnogo elemeta ',i1,1x,i1)
write(*,45)im,jm
else
call pp3(a,4,5,h)
35 format (1x,'4islo ne4etnih elementov matrici ',i2)
write(*,35)h
endif
end