!Вариант №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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.