You are on page 1of 6

!ovaj program racuna povrsinu trokuta za koji su date koordinate vrhova !

primjenom Heronove formule P=sqrt(s(s-a)(s-b)(s-c)); s=(a+b+c)/2 implicit none real:: K(3,2); ! koordinate vrhova real:: a,b,c,s,P; !stranice i povrsina integer i,j; do i=1,3 print*,'Unesi koordinate vrha',i,' X eneter Y' do j = 1,2 read(*,*) K(i,j) end do end do !racunamo stranice a=sqrt((K(2,2)-K(1,2))**2 + (K(2,1)-K(1,1))**2) b=sqrt((K(2,2)-K(3,2))**2 + (K(2,1)-K(3,1))**2) c=sqrt((K(3,2)-K(1,2))**2 + (K(3,1)-K(1,1))**2) s=0.5*(a+b+c) !poluobim trougla P=sqrt(s*(s-a)*(s-b)*(s-c)) !Heronov obrazac print*,'************' print*,'Povrsina trougla iznosi',P end program ! ovaj program racuna vrijednost reakcija,momenta savijanja ! i maksimalnih napona za prostu gredu opterecenu kontinualnim opterecenjem. ! Dato je: L,l1,l2,q,W; implicit none INTEGER i,N; REAL:: Ra,Rb,L,l1,l2,q,M(30),x,dx,W; N=30; print*,'UNESI RASPON GREDE L[m]' read(*,*)L print*,'UNESI POLOZAJ 1 KONTINUALNOG OPTERECENJA l1[m]' read(*,*)l1 print*,'UNESI DUZINU KONTINUALNOG OPTERECENJA l2[m]' read(*,*)l2 print*,'UNESI VRIJEDNOST KONTINUALNOG OPTERECENJA q[kN/m]' read(*,*)q print*,'UNESI VRIJEDNOST OTPORNOG MOMENTA PRESJEKA [cm3]' read(*,*)W ! reakcije oslonaca Ra=q*l2*(L-l1-0.5*l2)/L Rb=q*l2-Ra ! moment savijanja duz raspona dx=L/N do i=1,N x=i*dx if (x.le.l1) then M(i)=Ra*x else if (x.ge.l1.and.x.le.l1+l2)then M(i)=Ra*x-q*(x-l1)*(x-l1)/2. else M(i)=Rb*(L-x) end if end do print*,'REAKCIJE U OSLONCIMA IZNOSE: Ra=',Ra,'kN ','Rb=',Rb,'kN' print*,'MOMENT SAVIJANJA [kNm] i MAKSIMALNI NAPON [kN/cm2]' do i=1,N print*,i,M(i),100.*M(i)/W end do end program !ovaj program vrsi sortiranje datog niza prema velicini clanova !Nakon sortiranja, originalni i sortirani niz se ispisuju na ekran implicit none integer:: N,i,j,Niz1(100),Niz1Copy(100),Max;

print*,'Unesi broj clanova niza N, N<100'

read(*,*) N do i=1,N print*,'Unesi clan niza',i read(*,*)Niz1(i) end do Niz1Copy=Niz1 ! sacuvati originalni niz do j=1,N-1 do i=1,N-j if (Niz1(i).gt.Niz1(i+1)) then Max=Niz1(i) ! zamjena mjesta clanova niza Niz1(i)=Niz1(i+1) Niz1(i+1)=Max end if end do end do print*,'Originalni i sortirani niz iznose' do i=1,N write(*,100)Niz1Copy(i),Niz1(i) end do 100 format(i5,5x,i5) end program program Putanja !ovaj program racuna elemente trajektorije kod kosog hica !koristeci poziv za traject funkciju implicit none integer:: i,N; real:: g,PI ! fizicke konstante real::alfa,Vo,D,T,x,y real::traject g = 9.806 pi = 3.1415926 print*,'Unesi ugao izbacivanja alfa i pocetnu brzinu Vo' read(*,*) alfa,Vo alfa = alfa * pi / 180.0 ! prevedi u radijane D=Vo*Vo*sin(2.*alfa)/g ! maximalni domet print*,'maximalni domet D za date parametre iznosi',D,'[m]' T=2.*Vo*sin(alfa) print*,'Vrijeme leta T za date parametre iznosi',T,'[s]' print*,'Unesi broj tacaka na trajektoriji' read(*,*) N print*,' tacke trajektorije su ' do i=0,N x=i*D/N y=traject(x,alfa,Vo,g) print*,i,x,y end do end program Putanja !******** real function traject(x,alfa,Vo,g) implicit none real x,y,alfa,Vo,g traject = tan(alfa)*x - g*(1.+tan(alfa)*tan(alfa))*x*x/(2.*Vo*Vo) return end !ovaj program primjenom potprograma racuna !prostornu rotaciju vektora X implicit none integer:: i; real::X(3),Xrot(3),alfa; print*,'Unesi komponente vektora Xi, i=1,2,3'; do i=1,3 print*,'komponenta',i read(*,*)X(i) end do print*,'Unesi ugao rotacije oko Z ose, alfa'; read(*,*) alfa; call Rotacija(X,alfa,Xrot)

print*,'Zarotirani vektor ima koordinate:' do i=1,3 write(*,101),i,Xrot(i) end do 101 format(i3,3x,f8.3,/) end program !ovaj program vrsi multiplikaciju matrica A(3,3)i B(3,3) implicit none; integer:: i,j,k; real:: A(3,3),B(3,3),C(3,3),D(3,3) !inicijalizacija matrica A=0.;B=0.;C=0.;D=0.; do i=1,3 print*,'unesi red',i read*,(A(i,j),j=1,3) end do print*,'________________Unesi matricu B_________________' do i=1,3 print*,'unesi red',i read*,(B(i,j),j=1,3) end do write(*,10) ! dva prazna reda radi odvajanja matrica do i=1,3 print*,(A(i,j),j=1,3) end do write(*,10) 10 format(2/) do i=1,3 print*,(B(i,j),j=1,3) end do ! mnozenje matrica do i=1,3 do j=1,3 do k=1,3 C(i,j)=C(i,j)+A(i,k)*B(k,j) end do end do end do write(*,10) do i=1,3 print*,(C(i,j),j=1,3) end do D=matmul(A,B) ! poziv sistemskoj funkciji za mnozenje matrica A=D-C ! kontrola, A=0. write(*,10) do i=1,3 print*,(A(i,j),j=1,3) end do end !naci proizvod matrica A i B, kao matricu C program jah dimension A(4,4), B(4,4), C(4,4) print*,' program za racunanje proizvoda dvije matrice' print*,' unesite elemente matrice A(4*4)' do 10 i=1,4 do 10 j=1,4 print*, i,j read*,A(i,j) 10 continue print*,' unesite elemente matrice B(4*4)'

do 20 i=1,4 do 20 j=1,4 print*,i,j read*,B(i,j) 20 continue print*,'proizvod matrica A i B je ' do 30 i=1,4 do 30 j=1,4 C(i,j)=0 do 40 k=1,4 C(i,j)=C(i,j)+A(i,k)*B(k,j) 40 continue print*,i,j print*,C(i,j) 30 continue stop end program jah !program srednje ocjene !ucitavanje 6 ocjena i trazimo srenju vrijednost program sqrt real:: n1,n2,n3,n4,n5,n6, SRV=0.0, suma=0.0 integer::n=6,CB print*,'unesite ocjene iz predmeta Rac i Prog' read*,n1,n2,n3,n4,n5,n6 suma=n1+n2+n3+n4+n5+n6 SRV=suma/n CB=suma/n print*,' suma elemenata je:',suma print*,' srednja vrijednost je:',SRV print*,' srednja vrijednost cijeli broj je:',CB end program svrt ! i racuna prosjecnu vrijednost za nekoliko unijetih ocjena ! deklaracija varijabli implicit none integer:: i,ocjene(5),zbir; real:: prosjek; character:: predmeti*10

!(rijec sa 10 slovnih mjesta)

dimension predmeti(5)

!(vektor sa 5 elemenata)

print*,'UNESI LISTU PREDMETA (1-5)' do i=1,5 print*,i,'predmet: ' read(*,*) predmeti(i) end do print*,'************************************'; zbir=0 ! inicijalizacija (davanje pocetne vrijednosti) unos: do i=1,5 print*,'unesite ocjene iz predmeta' print*,i,'predmet: ',predmeti(i) read(*,*)ocjene(i) zbir=zbir+ocjene(i) end do unos print*,'********************************'; prosjek=0.2*zbir ! efikasnije je mnozenje nego dijeljenje /5

print*,'PROSJECNA OCJENA IZNOSI ',prosjek end program ! ovaj program rjesava kvadratnu jednacinu u opstem obliku a1x**2+a2*x+a3=0 implicit none integer:: i,ponovo; real::a(3),jed1,jed2; real::X1,X2; real::DIS; 10 continue print*,'UNESITE VRIJEDNOSTI ZA KOEFICIJENTE a,b,c' do i=1,3 read(*,*)a(i) end do DIS=a(2)**2-4.*a(1)*a(3); ! uslov if(DIS.lt.0.) then print*,'negativna diskriminanta, jednacina nema realno rjesenje' else X1=(-1.*a(2)+sqrt(dis))/(2.*a(1)) X2=(-1.*a(2)-sqrt(dis))/(2.*a(1)) jed1=a(1)*X1**2+a(2)*X1+a(3) jed2=a(1)*X2**2+a(2)*X2+a(3) print*,'******************************************************************' print*,'Rjesenja date jednacine iznose X1=',X1,'X2=',X2 print*,'******************************************************************' print*,'PROVJERA, jed1=',jed1 print*,'PROVJERA, jed2=',jed2 end if ! ponoviti postupak print*,'Zelis li ponoviti unos,unesi odgovarajuci broj ?' print*,'DA ---- unesi 1' print*,'NE ---- unesi 0' read(*,*)ponovo

if (ponovo.eq.1) go to 10

end program Napisati program koji racuna povrsinu trokuta u ravni xy za koji su date koordinate vrhova (xi,yi), i=1,2,3 program zadatak2 implicit none real:: x(3),y(3),p integer::i do i=1,3 print*,'Unesi koordinate',i,'tacke' read(*,*) x(i),y(i) end do p=(0.5)*abs((x(1))*(y(2)-y(3))+(x(2))*(y(3)-y(1))+(x(3))*(y(1)-y(2))) print*,p end

You might also like