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

Задача 4

Дана целочисленная матрица: А(6,10).

Если в верхней половине нечетного по номеру столбца нет отрицательного элемента, то следующем четном по номеру столбце найти число элементов, кратных заданному числу. В противном случае в следующем четном по номеру столбце найти номер максимального элемента.

РР1 – определить,нет ли в верхней половине заданного столбца отрицательного элемента?

РР2 – в заданном столбце найти число элементов, кратных заданному числу.

РР3 – в заданном столбце найти номер максимального элемента.

РР1 – определить, нет ли в верхней половине заданного столбца отрицательного элемента

класс

Имя

Смысл

Тип

Структура

входные

x

Имя матрицы

Целое

{X}n,m

n

Количество строк

Целое

Простая переменная

m

Количество столбцов

Целое

Простая переменная

J

Заданный столбец

Целое

Простая переменная

результат

p

флажок

логическое

Простая переменная

промежуточные

I

Номер текущей строки

Целое

Простая переменная

logical function pp1 (x,n,m,j)

dimension x(n,m)

integer x,n,m,i,j

logical p

p=.true.

i=1

do while (i.le.n/2.and.p)

if (x(i,j).lt.0) then

p=.false.

endif

i=i+1

enddo

pp1=p

end

РР2 – в заданном столбце найти число элементов, кратных заданному числу.

класс

Имя

Смысл

Тип

Структура

входные

x

Имя матрицы

Целое

{X}n,m

n

Количество строк

Целое

Простая переменная

m

Количество столбцов

Целое

Простая переменная

J

Заданный столбец

Целое

Простая переменная

c

Заданное число

Целое

Простая переменная

результат

k

Число кратных заданному числу элементов

Целое

Простая переменная

промежуточные

I

Номер текущей строки

Целое

Простая переменная

subroutine pp2 (x,n,m,j,c,k)

dimension x(n,m)

integer x,n,m,i,j,k,c

k=0

do i=1,n

if (x(i,j)/c*c.eq.x(i,j)) then

k=k+1

endif

enddo

end

РР3 – в заданном столбце найти номер максимального элемента.

класс

Имя

Смысл

Тип

Структура

входные

x

Имя матрицы

Целое

{X}n,m

n

Количество строк

Целое

Простая переменная

m

Количество столбцов

Целое

Простая переменная

J

Заданный столбец

Целое

Простая переменная

результат

jm

Номер максимального элемента

Целое

Простая переменная

промежуточные

I

Номер текущей строки

Целое

Простая переменная

xm

Максимальный элемент

Целое

Простая переменная

subroutine pp3 (x,n,m,j,jm)

dimension x(n,m)

integer i,j,x,n,m,jm,xm

xm=x(1,j)

jm=1

do i=2,n

if (x(i,j).gt.xm) then

jm=i

xm=x(i,j)

endif

enddo

end

(главный модуль)

класс

Имя

Смысл

Тип

Структура

входные

A

Имя матрицы

Целое

{A}6,10

c

Заданное число

Целое

Простая переменная

выходные

im

Номер максимального элемента столбца

Целое

Простая переменная

h

Число кратных заданному числу элементов

Целое

Простая переменная

промежуточные

I

Номер текущей строки

целое

Простая переменная

J

Номер текущего столбца

целое

Простая переменная

q

флажок

логическое

Простая переменная

program pppp

dimension a(6,10)

integer a,i,j,im,h,c

logical q,pp1

data c/4/,a/ 11, -2, 33, 19, 55, 11, 92, -3, 94, 95, 11, -2, 33, 44, 55, 11, -2, 33, 44, 55, 11, 22, 33, 44, 55,94, 95, 11, -2, 36, 44, -5, 12, -2, 36, 44, 55, 11, 22, 33, 44, 55, 19, 55, 11, 92, -3, 94, 95, 11, -2, 33, 44, 55, 11, -2, 33, 44, 55, 11/

!Write(*,*)'vvedite matricy 6 na 10 po formaty XX'

!read(*,36) ((A(I,j),j=1,10),i=1,6)

!write(*,*)' vvedite zadannoe 4islo po formaty XX'

!read(*,20)c

write(*,*)'matrica A'

write(*,36)((A(i,j),j=1,10),i=1,6)

36 format((1x,10(i2,1x)))

write(*,*)'zadannoe 4islo'

write(*,20)c

20 format (1x,i2)

do j=1,10,2

q=pp1(a,6,10,j)

if (q) then

call pp2(a,6,10,j+1,c,h)

30 format (1x,'4islo elementov kratnih ',i2,' v ',i2,' stolbce ravno ',i1)

write(*,30)c,j+1,h

else

call pp3(a,6,10,j+1,im)

40 format (1x,' nomer max elementa v ',i2,' stolbce : ',i1)

write(*,40)j+1,im

endif

enddo

end