Составление таблицы значений B=10*cos(i+j), используя для вычисления косинуса заданную формулу

Страницы работы

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

!Вариант №15

!№1

!Составить таблицу значений B=10*cos(i+j), используя для вычисления косинуса формулу cos(y)=1-y^2/2!+y^4/4!-y^6/6!...

program main

implicit none

integer :: counti = 5, countj = 3

integer i, j

real Fun, res

print*, "          i           j     res"

print*, "_________________________________"

do i = 1, counti, 1

do j = 1, countj

res =  Fun(i, j)

print*, i, j, res

enddo

enddo

end

function Fun(i, j)

implicit none

integer i, j

real Fun, cosin

Fun = 10 * cosin(real(i+ j))      

end

function Cosin(x)

implicit none

integer   n, sign

real, external :: fact

real cosin, member, x, st

real, parameter :: eps = 1e-6

st=1

sign=1

cosin=1

member = 1

n = 0

do while(abs(member) > eps )

st=st*x*x

n = n + 2

sign=-sign

member =sign*st/fact(n)

cosin = cosin + member

end do

end

real function fact(n)

implicit none

integer   n, t

fact=1

do t=1, n

fact=fact * t

end do

!№2

!Дано целое К от 2 до 20. Найти коэффициенты К-ого многочлена Чебышева, которые определяются по формуле: Т0(x)=1; T1(x)=x; Tn(x)=2*x*Tn-1(x)-Tn-2(x); n=2, 3,…,20

program main

implicit none

integer, parameter :: size=20

integer i

real arr(0 : size),x

print*, "Input x"

read*, x

call makeArrCheb(arr, size, x)

call OutArr(arr, size, x)

end   

subroutine OutArr(arr, size, x)

implicit none

integer :: size

integer  i

real x

real arr(0 : size)

print*, " #  x       cheb"

do i = 0, size

write(*,"(i2, f5.1, e15.3)")i, x, arr(i)

enddo

end

subroutine makeArrCheb(arr, size, x)

implicit none

integer :: size

integer  i

real arr(0 : size), x

arr(0)=1

arr(1)=x

do i=2, size

arr(i)=2*x*arr(i-1)-arr(i-2)

enddo

do i=2, size

arr(i-1)=arr(i)

enddo 

end

!№3

!Дана вещественная матрица размера 7*7, все элементы которой различны. Найти скалярное произведение строки в которой находится максимальный элемент, на столбец, в котором находится минимальный элемент.

Program main

implicit none

integer, parameter :: row=7, col= row

integer Mtr(row, col), sp

call InMtr(Mtr, row, col)

call PrintMatrix(Mtr, row, col)

call Calc(Mtr, row, col, Sp)

print*, Sp

end

subroutine PrintMatrix(Mtr, row, col)

use dflib

implicit none

integer row, col

integer Mtr(row, col)

integer i, j

do i=1, row

print"(10i6)", mtr(i, 1:col)

enddo     

end

subroutine InMtr(Mtr, row, col)

use dflib

implicit none

integer row, col

real rnd

integer Mtr(row, col)

integer i, j

call seed(-1)

do i=1, row

do j=1, col

call random(rnd)

Mtr(i, j) = rnd * 10 + 1

enddo

enddo     

end

subroutine Calc(Mtr, row, col, S) 

implicit none

integer maxj, mini, i, j, row, col, S, max, min

integer mtr(row, col)

max=Mtr(1,1)

min=Mtr(1,1)

maxj=1

mini=1

do i=1, row

do j=1, col

if (Mtr(i,j)>max) then

max=Mtr(i,j)

maxj=j

endif

if (Mtr(i, j)<min) then

min=Mtr(i,j)

mini=i

endif  

enddo

enddo

s = 0

do i=1, row

do j=1, col

S=S+Mtr(i, maxj)*Mtr(mini, j)

enddo

enddo

end

!№4

!Найти позицию заданного символа в строке.

program main

implicit none

integer GetPosChar, pos

character (80) str

character(1) ch

print*, "Input text"

read "(a)", str

print*, "Input ch"

read*, ch

pos=GetPosChar(str, ch)

print*, pos

end

integer function GetPosChar (str, ch)

implicit none

character (80) str

character(1) ch

integer i

GetPosChar = 0

do i=1, len_trim(str)

if (str(i:i)==ch) then

GetPosChar=i

return

endif

enddo

end      

!№5

!В последовательном текстовом файле сосчитать количество слов.

program main

implicit none

integer res

character (80) fin

print*, "Input File"

read*, fin

call GetNumb(fin, res)

print*, res

end

subroutine GetNumb(fin, res)

implicit none

character (*) fin

integer res, countWords

character (80) current

open (unit=11, file=fin, status="old", ERR=99)

res=0

do while (.not. eof (11))

read (11,"(a)") current

res=res+countWords(current) 

enddo

end

function countWords(current)

implicit none

character (*) current

integer i, countWords

countWords=1

do i=1, len_trim(current)

if (current(i:i)==" ") then

countWords=countWords+1

endif

enddo

end  

99 print*, " ERR File not found"

stop

end      

Похожие материалы

Информация о работе