Вы находитесь на странице: 1из 36

ZADACI ZA VJEBU

2016/2017 godine
PRIMJER 1.

! Prvi program
Program Pozdrav ! Naredba program
Character *20 Ime_Prezime ! Deklaracija
Print*,'Unesite Vase Ime i Prezime' ! Unos vrijednosti
Read*, Ime_Prezime ! Ucitavanje
Print*,' Dobro dosli ',Ime_Prezime,' Na vjezbe programiranja u fortranu' ! Ispis rezultata
End Program Pozdrav ! Kraj programa

PRIMJER 2.
Napisati program za izracunavanje povrsine trougla primjenom Heronovog obrasca ako su poznate
stranice trougla.
Program trougao
! Bez deklarisanja varijabli
Print*,'Unesite duzine stranica trougla a,b,c'
Read*,a,b,c
S=(a+b+c)/2.
P=SQRT(S*(S-a)*(S-b)*(S-c))
Print*,'Povrsina trougla je P=',P
End Program trougao

a=3; b=4; c=5. Rezultat je 6.


PRIMJER 3.

Napisati program koji uitava dvije take sa koordinatama A(x1;y1) i B(x2;y2), a zatim izraunava
rastojanje izmeu tih taaka prema obrascu .

Program tri

! Ovaj program racuna udaljenost izmedu tacaka A i B


! Deklaracija varijabli
Implicit none
REAL X1,X2,Y1,Y2,d
! Unos nepoznatih ili ulaznih poznatih vrijednosti
Print*,'Unesite X i Y vrijednosti za Prvu tacku'
Read*, X1,Y1
Print*,'Unesite X i Y vrijednosti za Drugu tacku'
Read*, X2,Y2
! Izracunavanje nepoznate
d=SQRT((X2-X1)**2+(Y2-Y1)**2)
! Ispis rezultata
Print*,'Rastojanje izmedu tacaka A i B iznosi d=',d
Stop
End Program tri

PRIMJER 4.
Napisati program za izraunavanje duzine stranice c i ugla alfa kod vrha C ako je poznata povrina P
i duzina stranice b trougla ABC.

Rjeenje:

Program cetiri
Implicit none
! Dekleracija varijabli
Real:: P,a,c,b,alfa,ugradp,PI
PARAMETER (PI=3.14159265)
! Unos poznatih velicina
Print*,'Unesite vrijednost povrsine trougla P u mm2'
Read*, P
Print*,'Unesite vrijednost duzine stranice b u mm'
Read*, b
! Izracunavanje nepoznate duzine stranice c
c=(2*P)/b
alfa=atan(c/b)
ugradp=(alfa*180)/PI
! Ispis vrijednosti
Print*,'Duzina stranice c u mm iznosi c=',c
Print*,'Vrijednost ugla alfa je=',alfa
Print*,'Vrijednost ugla kod vrha C u stepenima je=',ugradp
! Provjera
! Za stranice b=4 i c=20 mm povrsina trougla racuna se kao
P=(c*b)/2
Print*,'Povrsina trougla sa stranicama b i c koristenih za provjeru iznosi P=',P
a=sqrt(b**2+c**2)
Print*,'Duzina stranice a trougla ABC je a=',a
Stop
End Program cetiri

Ulaz P = 40; b=4; Rezultat c=20; alfarad=1.373401; alfastepeni=78.69007; stranica a=20.39608.


PRIMJER 5.

Napisati program koji izraunava prosjenu ocjenu za osam predmeta bez koristenja petlji.

Rjeenje: Program pet


Implicit none
! Dekleracija varijabli Program pet
Real:: P1,P2,P3,P4,P5,P6,P7,P8,SUM,SRVR Implicit none
Integer:: ponunos ! Dekleracija varijabli
Integer:: P=8 Real:: S
10 continue Real:: SRVR
! Unos poznatih velicina Real:: A
Print*,'Unesite vrijednost ocjena od 5 do 10 za osam predmeta' Integer:: i
Read*, P1,P2,P3,P4,P5,P6,P7,P8 Integer:: ponunos
! Operacije sa elementima Integer:: P=8
! Inicijalizacija pocetne vrijednosti dimension :: A(8)
SUM=0.0 10 continue
! Nalazenje sume i srednje vrijednsoti ! Unos poznatih velicina
SUM=SUM+P1+P2+P3+P4+P5+P6+P7+P8 Print*,'Unesite vrijednost ocjena od 5 do 10 za osam predmeta'
SRVR=SUM/P ! unosenje elemenata niza A
! Ispis rezultata do i=1,8
Print*,'Zbir unesenih ocjena je=',SUM read*, A(i)
Print*,'Prosjecna ocjena za osam predmeta je=',SRVR end do
Print*,'Za ponovni unos unesi ,1=da, bilo koji drugi broj =ne' ! Operacije sa elementima
Read*,ponunos ! Inicijalizacija pocetne vrijednosti
if(ponunos.eq.1) then S=0.0
go to 10 ! Nalazenje sume i srednje vrijednsoti
end if do i=1,8
Stop S=S+A(i)
End Program pet end do
SRVR=S/P
! Ispis rezultata
Print*,'Zbir unesenih ocjena je=',S
Print*,'Prosjecna ocjena za osam predmeta je=',SRVR
Print*,'Za ponovni unos unesi ,1=da, bilo koji drugi broj =ne'
Read*,ponunos
if(ponunos.eq.1) then
go to 10
end if
Stop
End Program pet

PRIMJER 5. NA DRUGI NACIN SA DO PETLJOM

PRIMJER 6:

Valjkastisilospoluprenikarimasfernikrov (kupolu) poluprenikaR. VisinavaljkastogdijelajeH.


PotrebnojenapisatiprogramkojiodreujevisinuHipovrinusilosazadatevrijednostir, RizapreminuV.
Pomouprogramaizraunativisinuipovrinusilosapoluprenikar=30 m, R=45mizapremina 120 000 m 3.
Promjenjiva r, R i V dodijeliti vrijednosi u komandnom prozoru.
Rjeenje:
Zaprmina valjka: Vcyl= r2H
Zapremina kupole: Vcap=(h2(3R-h))/3)
Gdje je: h=R-Rcos=R(1-cos), a se dobiva iz sin=r/R
Visina valjkastog dijela: H=(V- Vcap)/ r2
Povrina silosa: S=Scyl+Scap=2rH+2Rh

Programprimjer6
Implicit none
Real, Parameter:: PI = 3.1415927
Real:: Rv, Rk, V, h, Vk, Vv, Hv, theta, S
Print*, Unesi parametre r, R i V:
Read*, Rv, Rk, V
theta = asin(Rv / Rk)
h = Rk * (1.0 - cos(theta))
Vk = PI*(h**2)*(3*Rk - h)/3.0
Hv = (V - Vk) / (PI * Rv ** 2)
S = (2 * PI * Rv * Hv) + 2 * PI * Rk * h
Print*, Visina valjka H =, Hv
Print*, Povrina silosa S =, S
End Program primjer6

PRIMJER 7. Napisati program za raunanje broja e (osnova prirodnog logaritma) prema zadatoj
formuli;

za svaku vrijednost n stampati izracunato e.

! Deklaracija promjenjljivih
Integer::Nmax,n,i
Parameter (Nmax=20)
doubleprecision E,F
!Raunanje vrijednosti brojaE
E=1.0
do 20 n=1,Nmax
F=1.0
do 10 i=1,n
F=F*i
10 continue
E=E+1.0/F
Print'(I4,3x,F20.16)',n,E
20 continue
Stop
End

PRIMJER 8.
Napisati program za izraunavanje broja PI koristei datu formulu dok se ne dostigne lan 99.

Rjeenje:

! RAUNANJE BROJA PI PO FORMULI (*)


! Deklaracija varijabli
Integer::N,MAXN
Real::PI
PARAMETER (MAXN=99)
! Raunanje vrijednosti broja PI
PI=0.0
do 10 N=1,MAXN,4
PI=PI+1.0/N
10 continue
do 20 N=3,MAXN,4
PI=PI-1.0/N
20 continue
PI=4.0*PI
! Stampanje rezultata
Print*,'--------------------------'
Print 30,'Izraunata vrijednost broja PI iznosi PI=:',PI
30 Format (A,F10.6)
Stop
End

PRIMJER 9:

Napisati program koji tampa sa odgovarajuim zaglavljem vrijednosti:

; gdje je n cijeli broj u intervalu od 1 do 100.

Rjeenje:

! RAUNANJE VRIJEDNOSTI N
! Deklaracija varijabli
Integer::N,NMAX
PARAMETER (NMAX=100)
! Stampanje zaglavlja tabele
PRINT 10
10 FORMAT (/'n n**2 n**3 SQRT(n) n**(1/3)')
! Racunanje i stampanje tabele
do 20 N=1,NMAX
PRINT 30, N, N**2, N**3, SQRT(REAL(N)), N**(1./3.)
20 continue
30 FORMAT (1x,I3,I8,I9,2F9.4)
Stop
End

PRIMJER 10.

Napisati program koji za vrijednosti duzine predjenog puta, vremena za koje je taj put predjen i
ukupno potrosenog goriva racuna i stampa prosjecnu brzinu automobila i prosjecnu potrosnju goriva?

RJEENJE:

! PROGRAM ZA RACUNANJE PROSJECNE POTROSNJE GORIVA


! DEKLERACIJA VARIJABLI
Real:: Brzina,Vrijeme,Duzinaputa,Ukpotr,Prpotr
! UCITAVANJE PODATAKA
print*,' Unesite predjeno rastojanje u (km)'
read*,Duzinaputa
print*,' Unesite vrijeme trajanja voznje u (h)'
read*, Vrijeme
print*,' Unesite kolicinu ukupno potrosenog goriva u (l)'
read*, Ukpotr
! RACUNANJE I ISPISIVANJE REZULTATA
Brzina=Duzinaputa/Vrijeme
Prpotr=100*Ukpotr/Duzinaputa
print*,' Prosjecna brzina je:',Brzina,' (km/h)'
print*,' Prosjecna potrosnja goriva je:',Prpotr,' (l/100km)'
stop
end

PRIMJER 11.

Napisati program za izraunavanje ukupne i neto zarade radnika ako je zadana cijena po jednom
satu i ukupan broj sati rada. Na dio zarade koji prelazi 1050 km, placa se 10% poreza na dohodak.

RJEENJE:

! PROGRAM RACUNA UKUPNU I NETO ZARADU NEKOG RADNIKA AKO JE ZADANO


! CIJENA PO JEDNOM SATU RADA I UKUPAN BROJ SATI NA DIO ZARADE KOJI PRELAZI
! 1050 KM PLACA SE 10% POREZ NA DOHODAK

! DEKLARACIJA VARIJABLI

REAL:: NETZAR,UKZAR,BRSATI,ZARSAT,GRZAR,POREZ,ODBICI
PARAMETER (GRZAR=1050.0, POREZ=10.0)

! UCITAVANJE PODATAKA
PRINT*,' UKUPAN BROJ SATI:'
READ*,BRSATI
PRINT*,' ZARADA PO SATU:'
READ*,ZARSAT
! RACUNANJE REZULTATA
UKZAR=BRSATI*ZARSAT
IF (UKZAR.LT.1050.0) GOTO 30 ! IFuslov - grananje toka programa po ispunjenju uslova
ODBICI=UKZAR*POREZ/100
NETZAR=UKZAR-ODBICI

! STAMPANJE REZULTATA
30 PRINT*,'UKUPNA ZARADA:',UKZAR
PRINT*,'ZA ISPLATU:',NETZAR
STOP
END

PRIMJER 12. Nacin upotrebe i sintaksa DO Petlje.

! Demonstracija do petlje
Integer:: brojac,poc,kraj,korak
Parameter (poc=1,kraj=10,korak=1)
N=0
do 10 brojac=poc,kraj,korak
N=N+1
10 continue
print20, N
20 format (5x,'petlja izvrsena',I3,'puta')
stop
end
PRIMJER 13 - Demonstracija rada do petlje i IF - uslova
Napisati program koji pretvara temperaturu izracunatu u stepenima Farenhajta (Qf) u stepene

* T f 32
5
Tc
celizijuse (Tc) koristei obrazac. 9 . Za temperature od 30 do 60 F, sa korakom 2F.
Rjeenje:
PRVI SLUCAJ IF USLOV
! Pretvaranje temperature u stepenima fahrenhajta
! u stepene celizijusa po zadatom obrascu
! TCELZ=(5.0/9.0)*(TFRNHT-32.0)
! stampanje odgovarajuce tabele
! dekleracija promjenjljivih i definisanje konstanti
real:: TCELZ,TFRNHT,TFPOC,TFKRAJ,TKORAK
parameter (TFPOC=30.,TFKRAJ=60.,TKORAK=2.)
! stampanje zaglavlja tabele
print 10
10 format(4x,'t(F) t(C)'/4x,'------+------+')
TFRNHT=TFPOC
! pretvaranje temperature u stepene celizijusa i stampanje
20 TCELZ=(5.0/9.0)*(TFRNHT-32.0)
print 30,INT(TFRNHT),TCELZ
30 format(5x,I3,F8.2)
TFRNHT=TFRNHT+TKORAK
if(TFRNHT.LE.TFKRAJ) go to 20
stop
end
Izlaz na ekran
DRUGI SLUCAJ UPOTREBA DO PETLJE

! Pretvaranje temperature sa do petljom


! deklaracija varijabli
real:: TCELZ,TFRNHT,TFPOC,TFKRAJ,TFKORAK
parameter (TFPOC=30.,TFKRAJ=60.,TFKORAK=2)
print 10
10 format (4x,'t(F) t(C)'/4x,'-----+-----+')
do 20 TFRNHT=TFPOC,TFKRAJ,TFKORAK
TCELZ=(5.0/9.0)*(TFRNHT-32.0)
print 30, INT (TFRNHT),TCELZ
20 continue
30 format (5x,I3,F8.2)
stop
end
PRIMJER 14. UVOD U OPERACIJESA NIZOVIMA BROJEVA.
Napisati program za uitavanje niza A od 8 elemenata, nai sumu lanova niza A.
Sumu niza A odtampati u glavnom programu.
Rjeenje:
! suma elemenata niza A
dimension A(8)
print*,'program za sabiranje elemenata miza A'
print*,'Unesite 8 elemenata niza A'
! unosenje elemenata niza A
do 1 I=1,8
read*,A(I)
1 continue
! Operacija sa elementima niza A
S=0
do 2 I=1,8
S=S+A(I)
2 continue
! stampanje sume elemenata niza A
print*,'Suma je=',S
! zaustavljanje programa
stop
end
PRIMJER 15.
Napisati program za uitavanje niza B od 6 elemenata, nai proizvod lanova niza B.
Proizvod niza B odtampati u glavnom programu.
Rjeenje:
! Proizvod elemenata niza B
dimension B(6)
print*,'Program za izracunavanje proizvoda elemenata niza B'
print*,'Unesite 6 elemanata niza B'
! Unosenje elemenata niza B
do 1 I=1,6
read*,B(I)
1 continue
! Operacija sa elementima niza B
P=1
do 2 I=1,6
P=P*B(I)
2 continue
! Stampanje proizvoda niza B
print*,'proizvod je=',P
! zaustavljanje programa
stop
end
PRIMJER 16.
Uitati niz A od 10 elemenata, nai proizvod i sumu niza.
Proizvod i sumu niza A odtampati u glavnom programu.

Rjeenje:
! Proizvod i suma elemenata niza A
dimension A(10)
print*,'Program za izracunavanje proizvoda i sume elemenata niza A'
print*,'Unesite 10 elemanata niza A'
! Unosenje elemenata niza A
do 1 I=1,10
read*,A(I)
1 continue
! Operacije sa elementima niza A
P=1
S=0
do 2 I=1,10
S=S+A(I)
P=P*A(I)
2 continue
! Stampanje proizvoda i sume niza A
print*,'proizvod je=',P,'Suma je=',S
! zaustavljanje programa
stop
end
PRIMJER 17.
Uitati niz A od 20 elemenata, sortirati ih u rastucem redoslijedu te odstampati u glavnom programu.
Rjeenje:
! niz od 20 elemenata u rastujucem redoslijedu
dimension A(20)
print*,'program za sortiranje ele. niza A u rastujucem redoslijedu'
print*,'unesite 20 elemenata niza A'
do 10 i=1,20
read*,A(i)
10 continue
! sortiranje elemenata
do 20 i=1,19
do 15 j=i+1,20
if(A(i).lt.A(j)) go to 15
c=A(i)
A(i)=A(j)
A(j)=c
15 continue
20 continue
print*,'Sortirani elementi niza A su:'
do 30 j=1,20
print*,A(j)
30 continue
stop
end
! niz od n elemenata u rastujucem redoslijedu
dimension A(100) ! Niz do maksimalno 100 elemenata
print*,'program za sortiranje ele. niza A u rastujucem redoslijedu'
print*,'unos elemenata niza A'
print*,'unesite koliko ima elemenata niza A'
read*,n
print*,'unos n elemenata niza A'
do 10 i=1,n
read*,A(i)
10 continue
! sortiranje elemenata
do 20 i=1,n-1
do 15 j=i+1,n
if(A(i).lt.A(j)) go to 15
c=A(i)
A(i)=A(j)
A(j)=c
15 continue
20 continue
print*,'Sortirani elementi niza A su:'
do 30 j=1,n
print*,A(j)
30 continue
stop
end
PRIMJER 18.
Uitati niz A od 20 elemenata, sortirati ih u opadajucem redoslijedu te odstampati u glavnom
programu.

! niz od 20 elemenata u opadajuem redoslijedu


dimension A(20) ! Niz do maksimalno 20 elemenata
print*,'program za sortiranje ele. niza A u opadajuem redoslijedu'
print*,'unos elemenata niza A'
print*,'unesite koliko ima elemenata niza A'
read*,n
print*,'unos n elemenata niza A'
do 10 i=1,n
read*,A(i)
10 continue
! sortiranje elemenata
do 20 i=1,n-1
do 15 j=i+1,n
if(A(i).gt.A(j)) go to 15
c=A(i)
A(i)=A(j)
A(j)=c
15 continue
20 continue
print*,'Sortirani elementi niza A su:'
do 30 j=1,n
print*,A(j)
30 continue
stop
end

PRIMJER 19.
Napisati program koji nalazi: najveu, najmanju i prosjenu vrijednost (artimetiku sredinu )
N brojeva, gdje je N prvi podatak koji se uitava.

Rjeenje:
! Program ucitava N cijelih brojeva i nalazi
! najvecu,najmanju i prosjecnu vrijednost
! Deklaracija promjenjljivih
INTEGER::N,I
REAL::MINIM,MAXIM,SUMA,PROSVR,BROJ
! Ucitavanje broja N
print*,'Koliko ima ukupno brojeva (N>o):'
read*,N
! Ucitavanje prvog broja
print*,' Unesite prvi broj:'
read*,BROJ
MINIM=BROJ
MAXIM=BROJ
SUMA=BROJ
! Ucitavanje ostalih brojeva
do 10 I=2,N (ako umjesto broja 2 stavimo broj 1 u DO petlji vidjeti izlaz!!!)
print*,'I ostali brojevi:'
read*,BROJ
SUMA=SUMA+BROJ
IF (BROJ.LT.MINIM)THEN
MINIM=BROJ
ELSE IF (BROJ.GT.MAXIM)THEN
MAXIM=BROJ
END IF
10 continue
! Racunanje prosjecne vrijednosti i stampanje rezultata
PROSVR=SUMA/N
print*,'Minimalna vrijednost je :',MINIM
print*,'Maximalna vrijednost je :',MAXIM
print*,'Prosjecna vrijednost je :',PROSVR
STOP
END

PRIMJER 20.
Napisati program koji rauna najvei zajedniki djelilac dva prirodna broja: Najvei zajedniki djelilac
(NZD) dva pozitivna cijela boja I i J je najvei cijeli broj N kojim su djeljivi brojevi I i J bez ostatka.

Rjeenje:
! Progrm nalazi najveci zajednicki djelilac
! dva zadana prirodna broja
! Deklaracija promjenjljivih
INTEGER::I,J,N,R,POM
! Ucitavanje podataka
print*,'Unesite dva cijela prirodna broja:'
read*,I,J
! Racunanje najveceg zajednickog djelilca NZD
print*,'NZD brojeva ',I,' i',J,' je:'
IF (I.NE.MIN(I,J)) THEN
POM=I
I=J
J=POM
END IF
R=MOD(I,J)
DO WHILE (R.NE.0)
I=J
J=R
R=MOD(I,J)
END DO
print*,J
STOP
END

PRIMJER 21.
Uitati niz od 10 elemenata i nai sumu lanova na parnim i proizvod elemenata na neparnim
mjestima. Sumu i proizvod odtampati u glavnom programu.

Rjeenje:
! Suma parnih i proizvod neparnih elemenata niza A
dimension A(10)
print*, 'Program za sabiranje parnih i mnoenje neparnih elemenata niza A'
print*, 'Unesite 10 elemenata niza A'
! unosenje elemenata niza A
do 1 I=1,10
read*, A(I)
1 continue
! operacija sa elementima niza A
P=1
S=0
do 2 I=1,5
S=S+A(2*I)
P=P*A(2*I-1)
2 continue
! stampanje sume i proizvoda niza A
print*, 'Suma je= ' ,S, 'Proizvod je= ' ,P
! zaustavljanje programa
stop
end

PRIMJER 22. NIZOVI i IF - USLOV

Napisati program za uitavanje dva niza A i B proizvoljnih dimenzija, izvriti sabiranje prvih elemenata
nizova te sabiranje zadnjih elemenata nizova. Nakon sabiranja pojedinih elemenata nizova ispisati
vreu vrijednost dobivenog zbira elemenata.

PROGRAM dva_niza
dimension A(100), B(100)
Integer i,Na,Nb,C,D,A,B
Print*,'OVO JE PROGRAM KOJI VRSI OPERACIJE SA DVA NIZA'
10 continue
Print*,'Unesite koliko ima clanova niz A manje od 100'
Read*,Na
Print*,'Unesite broj elemenata nitza a koje ste odabrali'
do 1 i =1,Na
Read*,A(i)
1 continue
Print*,'Unesite koliko ima clanova niz B manje od 100'
Read*,Nb
Print*,'Unesite broj elemenata nitza a koje ste odabrali'
do 2 i =1,Nb
Read*,B(i)
2 continue
! Operacije sa elementima nizova
C=A(1)+B(1)
D=A(Na)+ B(Nb)
if(C.gt.D)then
Print*,'Vrijednost C veca je od D i iznosi C=',C
else if (C.eq.D) then
Print*,'Vrijednosti ci de su jednake i vrijednost C je =',C,' a vrijednost D je=',D
else if (c.lt.D) then
Print*,'Vrijednost D je veca od C i iznosi D je =',D
end if
Print*,'Zelite li ponoviti unos unesite 1 bilo koji drugi broj za Ne'
Read*,ponovounos
if (ponovounos.eq.1) goto 10
Stop
End PROGRAM dva_niza

PRIMJER 23.

Napisati program koji odreuje relativni poloaj take kada su poznate koordinate take, teita i
radijus kruga.

Program polozaj_tacke
Implicit none
Real::x,y,Xc,Yc,R,D,U
Print*,'Ovaj program odredjuje polozaj tacke'
10 continue
Print*,'Unesite koordinate x i y za tacku'
read*,x,y
Print*,'Unesite koordinate Xc i Yc i radijus R'
read*,Xc,Yc,R
D=sqrt((x - Xc)**2+(y-Yc)**2)
Print*,' Distanca je =',D
if (D.lt.R) then
Print*,'Tacka je unutar kruga'
else if (D.eq.R) then
print*,'Tacka je na konturi'
else
Print*,'Tacka je izvan kruga'
end if
Print*,'Zelite li ponoviti unos unesite broj 1 a bilo koji drugi broj za Ne'
Read*,U
if(U.eq.1) goto 10
Stop
End Program polozaj_tacke

PRIMJER 24.
Napisati program u fortranu koji za unesene vrijednosti temperature koje su zadate u intervalu od: 0 do 30 0C
ispisuje sljedee: T < 0 - smrzavanje; T < 10 hladno; T < 20 umjereno;T < 30 toplo; T>30-vrlotoplo.

Rjeenje I:

stop
! program za pokazivanje if then i else if uslova end
10 print*,'unesi temperaturu u C'
read*,C
IF(C.le.0) then
print*,'smrzavanje'
else Rjeenje II:
IF(C.le.10) then ! program za pokazivanje if then i else if uslova
print*,'hladno' 10 print*,'unesi temperaturu u C'
else read*,C
IF(C.le.20) then IF(C.le.0) then
print*,'umjereno' print*,'smrzavanje'
else else if(C.le.10) then
IF(C.le.30) then print*,'hladno'
print*,'toplo' else if(C.le.20) then
else print*,'umjreno'
print*,'vrlo toplo' else if(C.le.30) then
end if print*,'toplo'
end if else
end if print*,'vrlo toplo'
end if end if
print*,'zeliteli ponoviti unos unesite odg broj?' print*,'zeliteli ponoviti unos unesite odg broj?'
print*,' Da unesite 1' print*,' Da unesite 1'
print*,' Ne unesite 0' print*,' Ne unesite 0'
read(*,*) ponovo read(*,*) ponovo
if (ponovo.eq.1) go to 10 if (ponovo.eq.1) go to 10
stop
end

PRIMJER 25.
Sa tastature unjeti niz od 15 elemenata. Formirati novi niz y prema obrascu

1 xi 2 ln xi akoje xi 5

yi 1
1 x i x akoje xi 5
i
Zatim izracunati svih elemenata koji su razlichiti od 0.
Program primjer25
Implicit none
Real::x(5),y(5),proizvodx,ProizvodY,ProizvodXY
Integer::i
print*,'unesi clanove x'
Do i=1,5
Read(*,*)x(i)
If(x(i).ge.5.)then
Y(i)=((1+x(i))**2)*ln(x(i))
Print*,'x',i,'=',x(i)
Print*,'y',i,'=',y(i)
Else if(x(i).lt.5.)then
Y(i)=(2*x(i))
Print*,'x',i,'=',x(i)
Print*,'y',i,'=',y(i)
End if
End do
Proizvodx=1
Do i=1,5
If(X(i).ne.0)then
Proizvodx=Proizvodx*X(i)
end if
end do
ProizvodY=1
Do i=1,5
If(Y(i).ne.0)then
ProizvodY=ProizvodY*Y(i)
end if
end do
ProizvodXY=ProizvodY*ProizvodX
print*,'proizvod clanova X je',Proizvodx
print*,'proizvod clanova Y je',ProizvodY
print*,'proizvod clanova X I Y je',ProizvodXY
end program primjer25

PROGRAM 26.
Ujednodimenzionalnomnizuod 10
clanovaodreditirednibrojclanakojijenajvecipoapsolutnojvrijednostiirednibrojclanakojijedrugipoapsolutn
ojvrijednosti. Akoimavisejednakih, usvojitionajcijijerednibrojmanji.

Program niz
implicit none
real s,v,a(10)
integer i
do i=1,10
print*,Unesite ',i,'. clan niza'
read*,a(i)
end do
v=0
do i=1,10
if (v<abs(a(i))) then
v=a(i)
s=i
end if
end do
print*,'najveci broj po apsolutnoj vrijednosti je',v,'redni broj je',s
end program niz
PRIJMJER 27. DO WHILE PETLJA I USLOVI

! NAPISATI PROGRAM KOJI RACUNA PROIZVOD


! BROJEVA KOJI SE UNOSE SA TASTATURE.
! PROGRAM SE ZAUSTAVLJA I STAMPA REZULTAT
! KADA SE UCITA NULA. ZA RJESENJE
! KORISTITI DO WHILE PETLJU ILI IF NAREDBU
! Deklaracija Varijabli
Implicit none
Real::Broj, Rezultat
Print*,'Ovaj program racuna proizvod za unesene brojeve sve dok se ne unese (0)'
Print*,'Unesite prvi broj'
Read*, Broj
IF (Broj.EQ.0) then
Print*,'Unesena je nula'
Else
! Unosenje ostalih brojeva WHILE Petlja
Rezultat=1
DO WHILE (Broj.NE.0)
Rezultat=Rezultat*Broj
Print*,'Unesite broj:'
Read*,Broj
End do
! Ispis rezultata
Print*,'Proizvod unesenih brojeva iznosi:',Rezultat
End if
Stop
End
PRIJMJER 28.

Napisati program koji uitava N cijelih brojeva i pronalazi i ispisuje indeks (redni broj) prve i zadnje
pojave broja 5. Program treba stampati vrijednost (0) ako broj 5 nije pronaen.

! Program ucitava N cijelih brojeva, pronalazi i ispisuje


! redni broj prve i zadnje pojave broja TRAZI.
! Ako broj nije pronadjen stampa se vrijednost (0).

! KORISTENE OZNAKE
! TRAZI - Broj koji se trazi
! PRVI - Indeks prvog pojavljivanja broja TRAZI
! ZADNJE - Indeks zadnjeg pojavljivanja broja TRAZI
! N - Ukupan broj ucitavanih brojeva
! BROJ - Broj koji se trenutno ucitava
! i - Redni broj ucitavanog broja

! Deklaracija Varijabli
INTEGER:: TRAZI,PRVI,ZADNJI,N,BROJ,i
PARAMETER (TRAZI=5)
! Ucitavanje broja N - Dosada naucen metod
Print*,'Unesite koliko ima ukupno brojeva'
Read*,N
! Inicijalizacija pocetnih vrijednosti broja PRVI i ZADNJI
PRVI=0
ZADNJI=0
! Ucitavanje N odabranih brojeva i nalazenje broja (5) - TRAZI
do 10 i=1,N
Print*,'Unesite ',i,' - i broj'
Read*,BROJ
IF (BROJ.EQ.TRAZI) then
ZADNJI=i
IF (PRVI.EQ.0) PRVI=i
End if
10 Continue
! Ispis rezultata
Print*,'Indeks prvog pojavljivanja broja',TRAZI,' je',PRVI
Print*,'Indeks zadnjeg pojavljivanja broja ',TRAZI,' je',ZADNJI
Stop
End
PRIMJER 29.

Napisati program za odreivanje reakcija oslonaca, vrijednosti maksimalnog momenta i dimenzija okruglog
poprenog presjeka grednog nosaa optereenog prema slici. Vrijednosti sila F1 i F2, rastojanja (L, l 1 i l2) i
karakteristika materijala unose se sa tastature.

Rjeenje:

Program prosta_greda
! Program racuna staticke velicine proste grede
! I dimenzionise gredu okruglog Primjer - Podatke sa terminala mogue je prenijeti u
! Konstantnog poprecnog presjeka program Ms Excel te predstaviti graficki kao na slici.
! Eksplicitno deklarisanje varijabli
Implicit none
Real::l1,l2,L,F1,F2,Ra,Rb,M1,M2,Mmax,SigmaDoz,d;
10 continue
Print*,'Unesite vrijednosti rastojanja L,l1,l2, u (mm)'
Read*,L,l1,l2
if(l1+l2.ge.L) then
Print*,'Pogresan unos podataka'; go to 10
end if
! Unos vrijednosti za sile F1 i F2
Print*,'Unesite vrijednosti sila F1 i F2, u (kN)'
Read*,F1,F2
! Unos dozvoljenog naprezanja SigmaDoz, u (kN/mm2)
Read*,SigmaDoz
! Izracunavanje reakcija u osloncima Ra i Rb,SumaMa=0
Rb=(F1*l1+F2*(L-l2))/L
Ra=F1+F2-Rb
Print*,'Reakcije oslonaca iznose Ra=',Ra,'Rb=',Rb
! Momenti savijanja u tackama 1 i 2
! Mmax=maksimalni moment savijanja
M1=Ra*l1
M2=Rb*l2 Slika. Grafiki prikaz momenta savijanja i prenika grede
Mmax=M1
if(M2.gt.Mmax) Mmax=M2;
Print*,'Maksimalni moment je=',Mmax
! Dimenzionisanje precnika grede
d=(32*Mmax/(3.14159*SigmaDoz))**0.33333
Print*,'Potrebni precnik grede iznosi',d,'(mm)'
stop
end program prosta_greda
PRIMJER 30. Podprogram - Function
! PRIMJERFRUNKCIJSKIPODPROGRAM
Print*, 'Programzasabiranjedvijevarijabepomocufunkcijskogpotprograma'
Print*, 'Unesitevarijablua'
Read*,a
Print*, 'Unesite varijablu b'
Read*,b
suma=f(a,b)
Print*, 'Suma varijabli a i b je =',suma
Stop
End
! Sabiranje
Function f(a,b)
f=a+b
Return
End
PRIMJER 31.

Napisati program koji za date vrijednosti a i b racuna vrijednost c prema slijedecem uslovu;

2a 3b
ako je a 2b 3
ab

c 3b 3 ako je a 2b 3
8a
ako je a 2b 3
b

!Program za odredjivanje funkcije Program drugi_nacin


! f(a,b)
! ( Aritmetiki oblik if naredbe) bez fun.pod.p
Real a,b
Print*, 'Unesite nepoznatu a i b' Integer a,b
Read*,a,b Print*,'Unesite vrijednosti a i b'
y=f(a,b) Read*,a,b
Print*, 'Trazena funkcija je = ',y
if (a-(2*b-3))20,30,40
Stop
End 20 c=(2.0*a-3.0*a)/(a*b)
! Funcija - podprogram go to 50
function f(a,b) 30 c=3.0*b**3
Real a,b,f
go to 50
if(a.lt.2*b-3)then
f=((2.0*a)-(3.0*b))/(a*b) 40 c=8.0*a/b
else if(a.eq.2*b-3)then 50 print*,'Vrijednost Funkcije je =',c
f=3.0*b**3.0 End Program drugi_nacin
else if(a.gt.2*b-3)then
f=(8.0*a)/b
End if
Return
End
PRIMJER 32.
Koristei funkcijski podprogram napisati program za odreivanje vrijednosti funkcije f(x);
!Program za odredjivanje funkcije
! x**3 x>5
! f(x)= x**3+2 x=5
! 5*x**3 x<5
Print*, 'Unesite nepoznatu x'
Read*, x
y=f(x)
Print*, 'Trazena funkcija je = ',y
Stop
End
function f(x)
if(x.gt.5) f=x**3
if(x.eq.5)f=x**3+2
if(x.lt.5) f=5*x**3
Return
End

!Program za odredjivanje funkcije drugi nacin prosireno


Print*,'Unesite nepoznatu x'
Read*, x
y=f(x)
Print*,'Trazena funkcija je = ',y
Stop
End
! Podprogram
function f(x)
if (x.gt.5) then
f=x**3
Print*,'Posto je x>5 vrijednost funkcije je f(x)=x**3'
Else
if (x.eq.5) then
f=x**3+2
Print*,'Posto je x=5 vrijednost funkcije je f(x)=x**3+2'
Else
if (x.lt.5) then
f=5*x**3
Print*,'Posto je x<5 vrijednost funkcije je f(x)=5*x**3'
End if
End if
End if
Return
End

! Podprogram drugi nacin


function f(x)
if (x.gt.5) then
f=x**3
Print*,'Posto je x>5 vrijednost funkcije je f(x)=x**3'
Else if (x.eq.5) then
f=x**3+2
Print*,'Posto je x=5 vrijednost funkcije je f(x)=x**3+2'
Else if (x.lt.5) then
f=5*x**3
Print*,'Posto je x<5 vrijednost funkcije je f(x)=5*x**3'
End if
Return
End

PRIMJER 33.

Rezervoar vodotornja ima oblik prikazan na crteu (donji dio je nalazi se plovak koji pokazuje nivo vode. Napisati program koji
valjak, gornji dio je obrnuta zaobljena kupa). Unutar rezervoara izrauva koliinu vode u zavisnosti od polozaja (visine h) plovka.
Ulazni argumenti su vrijednost visine h, a rezultat koliina vode u ! **********************************************************************
m3. U programu postaviti da visine nesmiju prelaziti granine !Program za odredjivanje funkcije
vrijednosti visina datih na crteu (ograniiti kao ne dozvoljen !Zapremine vodotornja
Print*,'Unesite visinu nivoa vode h u (m).'
unos).
Read*,h
v=f(h,rh)
Print*,'Zapremina vode u vodotornju je V= ',v,' m3'
Stop
End

! Podprogram
function f(h,rh)
if (h.le.19) then
f=3.14159*12.5**2*h
Print*,'Posto je h<=19 vrijednost zapremine je v=Pi*(12.5)2 *h'
Else if (h.gt.19.and. h.le.33) then
rh=12.5+10.5*(h-19)/14
Za 0h19 m, koliina vode je odreena valjkom visine h : f=3.14159*12.5**2*19+3.14159*
v= 12.52 h *(h-19)*(12.5**2+12.5*rh+rh**2)/3
Print*,'Posto je h>19 i h=<33 m vrijednost funkcije je zapremina drugi slucaj'
Za 19h33 m, koliina vode se izraunava kao zbir zapremine End if
valjka visine 19 m i koliine vode u kupi: Return
End
! **********************************************************************

Gdje je: rh = 12.5+(10.5/14)*(h-19)

! **********************************************************************
!Program za odredjivanje funkcije i
!Zapremine vode vodotornja prikazanog na slici
Print*,'Unesite visinu nivoa vode h u (m).'
Read*,h
v=f(h,rh)
Print*,'Zapremina vode u vodotornju je V= ',v,' m3'
Stop
End
! Podprogram
function f(h,rh)
if (h.lt.19) then
f=3.14159*12.5**2*h
Print*,'Posto je h<=19 vrijednost zapremine je v=Pi*12.5**2*h'
Else if (h.gt.19) then
rh=12.5+10.5*(h-19)/14
f=3.14159*12.5**2*19+3.14159*
*(h-19)*(12.5**2+12.5*rh+rh**2)/3
Print*,'Posto je h>=19 i h=<33 m vrijednost funkcije je zapremina drugi slucaj'
End if
Return
End
!
*************************************************************************

PRIMJER 34.

Koeficijent trenja moe se odrediti pomou eksperimenta u kojem se mjeri sila potrebna za
pomjeranje mase m. Kada se izmjeri sila, uz poznatu masu, koeficijent trenja se dobiva na osnovu
formule:
U slijedeoj tabeli dati su rezultati mjerenja F za est eksperimenata. Odrediti koeficijent trenja za
svaki eksperiment i njegovu prosjenu vrijednost koristei podprogram trenje.

Program primjer33
implicit none
real, parameter:: g = 9.81 ! gravitaciono ubrzanje
real, dimension(1:6):: F, m, mi
real:: mi_prosjek, mi_ukupno,trenje
integer:: i
! inicijalizacija niziva
m = (/ 2.0, 4.0, 5.0, 10.0, 20.0, 50.0 /)
F = (/ 12.5, 23.5, 30.0, 61.0, 117.0, 294.0 /)
mi_ukupno = 0.0
do i = 1, 6
mi(i) = trenje(F(i), m(i))
mi_ukupno = mi_ukupno + mi(i)
end do
mi_prosjek = mi_ukupno / 6.0
! Ispis
Print*,'Koeficijenti trenja su:'
do i = 1, 6
print*,mi(i)
end do
print*,'Prosjecna vrijednost:', mi_prosjek
end program primjer33

function trenje(F,m)
real m
g=9.81
trenje = F/(m*g)
return
end
PRIMJER 35.
etri krunice su smjetene kao na slici. U svakoj taki dodira krunice su tangente jedna na drugu. Odrediti rastojanje
izmeu centra C2 i C4. Poluprenici krunica su: R1=16mm, R2=6,5mm, R3=12mm, R4=9,5mm.

Linije koje povezuju centre krunica ine etri trougla, poznate su duine svih stranica dva takva trougla C 1C2C3 i C1C3C4 .
Taj podatak se koristi za izraunavanje uglova 1 i 2 pomou kosinusne teoreme.

Zatim se izrauna stranica C2 C4 i pomou trougla C1 C2 C4 (kosinusna teorema poznate su duine C1 C2 i C1 C3 a ugao 3
u programu oznacen kao gama je zbir uglova 1 i 2).

Programprimjer34
implicit none
real:: r1, r2, r3, r4 ! poluprecnici kruznica
real:: c12, c23, c34, c14, c13, c24 ! udaljenosti prema slici ili stranice trouglova
real:: gama1, gama2, gama ! uglovi gama1, gama2 i gama
r1 = 16.0
r2 = 6.5
r3 = 12.0
r4 = 9.5
! Udaljenost izmedju susjednih kruznica prema slici
c12 = r1+r2
c23 = r2+r3
c34 = r3+r4
c14 = r1+r4
c13 = r1+r3
gama1 = ugao(c23, c12, c13)! ugao izmedju stranica c12 i c13
gama2 = ugao(c34, c14, c13)! ugao izmedju stranica c14 i c13
gama = gama1 + gama2
c24 = udaljenost(c12, c14, gama)
print*, "Udaljenost izmedju centra 1 i 2: ", c24
call system("PAUSE")
contains
functionugao(a,b,c)result(gama)
real, intent(in) :: a,b,c
real:: cos_bc, gama
cos_bc = (a**2 - b**2 - c**2) / (-2*b*c)
gama = acos(cos_bc)
end function
function udaljenost(a,b, gama) result (r)
real, intent(in) :: a,b,gama
real:: r
r =sqrt(abs(a**2 + b**2 - 2*a*b*cos(gama)))
end function
end program
PRIMJER 36.
U osloncu nosaa djeluju tri sile. Napisati program za izraunavanje ukupne sile koja djeluje u osloncu nosaa.
Sila je vektor. U dekartovom koordinatnom sistemu, dvodimenzionalan vektor F moemo zapisati kao:

Gdje je F jaina sile, njen ugao prema osi x, Fx i Fy su komponente od F u smjeru ose x odnosno y, a (i) i (j) jedinini
vektori u tim smjerovima, Ako su poznati Fx i Fy onda se F i mogu izraunati kao:

i
Ukupna sila koja djeluje na nosa dobiva se sabiranjem sila koje na njega djeluju.
Programprimjer36
Implicit none
Real, parameter:: PI = 3.1415927
Real:: F1, F2, F3
Real:: a1, a2, a3
Real:: R, Rx, Ry, theta
F1 = 400.0
F2 = 500.0
F3 = 700.0
a3 = radian(143.0)
a2 = radian(30.0)
a1 = radian(-20.0)
Rx = F1*cos(a1) + F2*cos(a2) + F3*cos(a3)
Ry = F1*sin(a1) + F2*sin(a2) + F3*sin(a3)
theta = atan2(Ry, Rx)
R = sqrt(Rx**2 + Ry**2)
Print*, 'Rezultantna sila je:', R, ' u N"
Print*, 'Ugao je:', degradian(theta) , ' stepena'
Contains
Function radian (deg) result (rad)
Real, intent(in) :: deg
Real:: rad
rad = deg * PI / 180.0
End function
Function degradian(rad) result (deg)
Real, intent(in) :: rad
Real:: deg
deg = rad *180.0 / PI
End function
End program

PRIJMER 37.
Napisati program za uitavanje (x,y) koordinata 25 taaka a zatim napisati funkcijski potprogram koji
e da rauna rastojanja datih taaka od take sa kordinatom (X A = 0.8 i YA = 1.5), a potom u glavnom
programu nai najveu i najmanju duinu izmeu koordinata taaka i take (A).
! Program ucitatava x,y koordinate 25 tacaka. ! Rjeenje bez funkcije
! Funkcijski potprogram duzina se koristi za racunanje, ! Program ucitatava x,y koordinate 25 tacaka.
! Rastojanja datih tacaka od tacke sa Koordinatom xa=0,8 i y=1,5 . ! Rauna rastojanja datih tacaka od tacke
! U glavnom programu se nalazi najveca i najmanja duzina
sa ! koordinatom xa=0,8 i y=1,5.
! izmedju tacaka i tacke A.
Dimension x(25),y(25),d(25) ! U glavnom programu se nalazi najveca i
Print*, 'Program za racunanje rastojanje tacaka od tacke' najmanja ! duzina izmedju tacaka i tacke A.
Print*, 'Xa=0,8 i Y=1,5' Dimension x(25),y(25),d(25)
Print*, 'Unesite koordinate 25 tacaka a(x,y)' Print*, 'Program za racunanje rastojanje tacaka od tacke'
do 10 i=1,25 Print*, 'Xa=0,8 i Y=1,5'
Print*, 'Tacka broj',i Print*, 'Unesite koordinate 25 tacaka a(x,y)'
Read*, x(i),y(i)
10 continue
do 10 i=1,25
xa=0.8 Print*, 'Tacka broj',i
ya=1.5 Read*, x(i),y(i)
do 20 i=1,25 10 continue
d(i)=duzina(x(i),y(i),xa,ya) xa=0.8
20 continue ya=1.5
dmax=d(1) ! Postavi minimalnu i maksimalnu vrijednost tako do 20 i=1,25
dmin=d(1) ! da odgovaraju vrijednostima prvog elementa d(i)= sqrt((x(i)-xa)**2+(y(i)-ya)**2)
! Postavi dmax na veu i dmin na manju vrijednost
do 30 i=1,25
20 continue
If (dmax.lt.d(i)) then dmax=d(1) ! Postavi minimalnu i maksimalnu vrijednost tako
dmax=d(i) dmin=d(1) ! da odgovaraju vrijednostima prvog elementa
Else if (dmin.gt.d(i)) then ! Postavi dmax na veu i dmin na manju vrijednost
dmin=d(i) do 30 i=1,25
End if If (dmax.lt.d(i)) then
30 continue dmax=d(i)
Print*, 'Maksimalna duzina je= ',dmax,' minimalna duzina je= ',dmin Else if (dmin.gt.d(i)) then
Stop
End
dmin=d(i)
End if
Function duzina(a,b,c,d) 30 continue
duzina=sqrt((a-c)**2+(b-d)**2) Print*, 'Maksimalna duzina je= ',dmax,' minimalna duzina je= ',dmin
Return Stop
End End

PRIMJER 38.
Napisati program koji izraunava putanju projektila koristei poziv za putanja Funkciju. Ulazni podaci
funkcije su poetna brzina i ugao pod kojim je projektil ispaljen. Izlazni argumenti su: vrijeme
projektila do dostizanja maksimalne visine, maksimalno vrijeme leta projektila, maksimalna visina i
maksimalna udaljenost.
Kretanje projektila moe se analizirati s obzirom na horizontalnu i vertikalnu komponentu poetne
brzine. Poetna brzina moe se razloiti u horizontalnom i vertikalnom pravcu i prikazuje se kao:

i
U vertikalnom pravcu brzina i poloaj projektila dati su kao:

i
Vrijeme koje je potrebno projektilu do najvie take i odgovarajua visina se prikazuje kao:

i
Ukupno vrijeme je dvostruko vrijeme od ( thmax )koje je potrebno projektilu do najvie take i rauna se
kao: .

U horizontalnom smjeru sa konstantnom brzinom poloaj projektila rauna se kao: ,

i to je maksimalni domet projektila izracunat kao D = Vx Tuk

Program primjer38
! Ovaj program racuna vremena, visinu i domet projektila te elemente trajektorije
! Koristeci poziv za putanja funkciju
Implicit none
Real Vo,theta,theta1,Vx,Vy,x,y,hmax,Tuk,Thmax,D,putanja
Real, Parameter :: PI = 3.1415926
Real, Parameter :: g = 9.81
Integer i,n
Print *, 'Unesi pocetnu brzinu u (m/s):'
Read *, Vo
Print *, 'Unesi ugao izbacivanja:'
Read *, theta
Print *, 'Unesi broj tacaka na trajektoriji:'
Read *, n
theta1 = theta * (PI / 180.0) ! Pretvori u radijane
Vx = Vo * cos(theta1) ! Vx - komponenta po x osi
Vy = Vo * sin(theta1) ! Vy - komponenta po y osi
Thmax = Vy/g ! Vrijeme potrebno za dostizanje maksimalne visine
Tuk = 2.0 * Vy/g ! Ukupno vrijeme trajanja leta projektila
hmax=Vy**2/(2*g) ! Maksimalna visina projektila
D = Vx*Tuk ! Maksimalni domet projektila
Print*,' Vrijeme za dostizanje maksimalne visine je ',Thmax,' (s)'
Print*,' Ukupno vrijeme trajanja leta projektila je ',Tuk,' (s)'
Print*,' Maksimalna visina koju projektil dostigne je ',hmax,' (m)'
Print*,' Maksimalni domet kojeg dostize projektil je ',D,' (m)'
Print*,'Tacke trajektorije su'
do i = 0,n
x = D*i/n
y = putanja(x,theta1,Vo,g)
Print *,i,x,y
End do
End Program primjer38
Function putanja(x,theta1,Vo,g)
putanja = tan(theta1)*x - g*(1.+tan(theta1)*tan(theta1))*x**2/(2.*Vo**2)
Return
End

! Vo = 230 m/s
! Ugao = 390

Program primjer38
! Ovaj program racuna vremena, visinu i domet projektila te elemente trajektorije
! Koristeci poziv za putanja funkciju Drugi nacin
Implicit none
Real Vo,theta,theta1,Vx,Vy,x,y,hmax,Tuk,Thmax,D,putanja
Real, Parameter :: PI = 3.1415926
Real, Parameter :: g = 9.81
Integer i,n
Print *, 'Unesi pocetnu brzinu u (m/s):'
Read *, Vo
Print *, 'Unesi ugao izbacivanja:'
Read *, theta
Print *, 'Unesi broj tacaka na trajektoriji:'
Read *, n
theta1 = theta * (PI / 180.0) ! Pretvori u radijane
Vx = Vo * cos(theta1) ! Vx - komponenta po x osi
Vy = Vo * sin(theta1)! Vy - komponenta po y osi
Thmax = Vy/g! Vrijeme potrebno za dostizanje maksimalne visine
Tuk = 2.0 * Vy/g ! Ukupno vrijeme trajanja leta projektila
hmax=Vy**2/(2*g)! Maksimalna visina projektila
D = Vx*Tuk! Maksimalni domet projektila
Print*,' Vrijeme za dostizanje maksimalne visine je ',Thmax,' (s)'
Print*,'Ukupno vrijeme trajanja leta projektila je ',Tuk,' (s)'
Print*,' Maksimalna visina koju projektil dostigne je ',hmax,' (m)'
Print*,' Maksimalni domet kojeg dostize projektil je ',D,' (m)'
Print*,'Tacke trajektorije su'
do i = 0,n
x = D*i/n
y = putanja(x,Vx,Vy,g)
Print *,i,x,y
End do
End Program Zadatak2

Function putanja(x,Vx,Vy,g)
real x, Vx, Vy,t,g
t = x / Vx
putanja = Vy*t - 0.5 * g * (t**2)
Return
End

Program primjer38 ! bez podprograma


! Ovaj program racuna vremena, visinu i domet projektila te elemente trajektorije
Implicit none
Real Vo,theta,theta1,Vx,Vy,x,y,hmax,Tuk,Thmax,D
Real, Parameter :: PI = 3.1415926
Real, Parameter :: g = 9.81
Integer i,n
Print *, 'Unesi pocetnu brzinu u (m/s):'
Read *, Vo
Print *, 'Unesi ugao izbacivanja:'
Read *, theta
Print *, 'Unesi broj tacaka na trajektoriji:'
Read *, n
theta1 = theta * (PI / 180.0) ! Pretvori u radijane
Vx = Vo * cos(theta1) ! Vx - komponenta po x osi
Vy = Vo * sin(theta1) ! Vy - komponenta po y osi
Thmax = Vy/g ! Vrijeme potrebno za dostizanje maksimalne visine
Tuk = 2.0 * Vy/g ! Ukupno vrijeme trajanja leta projektila
hmax=Vy**2/(2*g) ! Maksimalna visina projektila
D = Vx*Tuk ! Maksimalni domet projektila
Print*,' Vrijeme za dostizanje maksimalne visine je ',Thmax,' (s)'
Print*,' Ukupno vrijeme trajanja leta projektila je ',Tuk,' (s)'
Print*,' Maksimalna visina koju projektil dostigne je ',hmax,' (m)'
Print*,' Maksimalni domet kojeg dostize projektil je ',D,' (m)'
Print*,'Tacke trajektorije su'
do i = 0,n
x = D*i/n
y = tan(theta1)*x - g*(1.+tan(theta1)*tan(theta1))*x**2/(2.*Vo**2)
Print *,i,x,y
End do
End Program primjer38

Podatke mozemo predstaviti i graficki primjenom Ms Exell programa

Вам также может понравиться