You are on page 1of 11

!

Napisati program koji ce za matricu realnih brojeva dimenzija 4x4 sabrati sve elemente u i-tom redu matrice
PROGRAM MAATRICE1
IMPLICIT NONE
REAL::MATRICA(4,4),SUMA
INTEGER::I,J,K
PRINT*,'UNSITE LEMENTE MATRICE'
DO J=1,4 !REDOVI
DO K=1,4 !KOLONE
READ*,MATRICA(J,K)
END DO
END DO
!2. NACIN
!READ*,((MATRICA(J,K),K=1,4),J=1,4) - K KOLONE,J REDOVI
PRINT*,'UNESITE BROJ REDA'
READ*,I
SUMA=0
DO J=1,4
SUMA=SUMA+MATRICA(I,J)
END DO
PRINT*,'MATRICA:'
DO J=1,4
PRINT*,(MATRICA(J,K),K=1,4)
END DO
PRINT*,'SUMA ELEMENATA U',I,'-TOM REDU'
PRINT*,SUMA
ENDPROGRAM MAATRICE1
!NAPISATI PROGRAM KOJI CE GENERISATI MATRICU D NXN TAKO DA ELEMENTI NA GLAVNOJ DIJAGONALI BUDU 0 ELEMENTI
IZNAD NJE 1 A ELEMENTI ISPOD NJE -1 . ISPISATI MATRICU NA EKRANU
PROGRAM MATRIX2
IMPLICIT NONE
REAL,ALLOCATABLE::D(:,:)
INTEGER::I,J,N
PRINT*,'UNESITE RED N MATRICE D'!MATRICAA K-TOG,N-TOG ITD REDA JE USTVARI MATRICA K*K ILI N*N-KVADRATNA
READ*,N
ALLOCATE(D(N,N))
!ELEMENTI SPOREDNE DIJGONALE a(I,M+1-I) M-BROJ KOLONA
DO I=1,N
DO J=1,N
IF(I==J) THEN
D(I,J)=0
ELSE IF (I>J) THEN
D(I,J)=-1
ELSE
D(I,J)=1
END IF
END DO
END DO
PRINT*,'MATRICA D(',N,'X',N,')'
DO I=1,N
PRINT 10,(D(I,J),J=1,N)
END DO
10FORMAT(2I2)
DEALLOCATE(D)END
!NAPISATI PROGARM KOJI CE ZAMTRICU X(3X3) I Y(3X3) IZRACUNATI MATRICU Z=X*Y I Z1=Y*X,TE NA EKRANU ISPISATI Z I Z1
PROGRAM MATRIX3
REAL::X(3,3),Y(3,3),Z(3,3),Z1(3,3),S !REDOVI 1. KOLONE 2.
INTEGER::I,J,K
PRINT*,'UNESITE ELEMENTE MATRICE X(3X3)'
DO I=1,3
DO J=1,3
READ*,X(I,J)
END DO
END DO
PRINT*,'UNESITE ELEMENTE MATRICE Y(3X3)'
DO I=1,3
DO J=1,3

READ*,Y(I,J)
END DO
END DO
DO I=1,3
DO J=1,3
S=0
DO K=1,3
S=S+X(I,K)*Y(K,J)
END DO
Z(I,J)=S
END DO
END DO
DO I=1,3
DO J=1,3
S=0
DO K=1,3
S=S+Y(I,K)*X(K,J)
END DO
Z1(I,J)=S
END DO
END DO
PRINT*,'Z=X*Y'
DO i=1,3
PRINT*,(Z(I,J),J=1,3)
END DO
PRINT*,'Z1=Y*X'
DO i=1,3
PRINT*,(Z1(I,J),J=1,3)
END DO
END
!NAPISATI PROGRAM KOJI CE ZA MATRICU A(NXN) FORMIRATI MATRICU AT - TRANSPONOVANU MATRICU MATRICE A
PROGRAM MATRIXTRANSPOSE
IMPLICIT NONE
REAL,ALLOCATABLE::A(:,:),AT(:,:)
INTEGER I,J,N
PRINT*,'UNESITE VELICINU MATRICE A'
READ*,N
ALLOCATE(A(N,N),AT(N,N))
PRINT*,'UNESITE ELEMENTE MATRICE A(NXN)'
DO I=1,N
DO j=1,N
READ*,A(I,J)
AT(J,I)=A(I,j)
END DO
END DO
PRINT*,'A'
DO I=1,N
PRINT*,(A(I,J),J=1,N)
END DO
PRINT*,'AT'
DO I=1,N
PRINT*,(AT(I,J),J=1,N)
END DO
END
!Napisati program koji ce za matricu a n-tog reda odrediti najmanji i najveci clan, ispisati u kojem redu i kojoj koloni se nalazi koji od navedenih
elemenata.Unos elemenat u matricu odraditi preko subroutine unos
program prvi
real, allocatable::a(:,:)
integer i,j,n,r,k,r1,k1
real min,max
read*, n
allocate(a(n,n))
call unos(a,n)
min=a(1,1)

max=a(1,1)
r=1
k=1
do i=1,n
do j=1,n
if (min.gt.a(i,j))then
min=a(i,j)
r=i
k=j
end if
end do
end do
r1=1
k1=1
do i=1,n
do j=1,n
if (max<a(i,j)) then
max=a(i,j)
r1=i
k1=j
end if
end do
end do

!Napisati program koji ce za matricu a 4x4 odrediti sume clanova svakog reda zasebno i dodijeliti ih u red s
program prvi
real a(4,4),s(4)
integer i,j
print*,Unesite matricu
do i=1,4
do j=1,4
read*, a(i,j)
end do
end do
s=0
do i=1,4
do j=1,4
s(i)=s(i)+a(i,j)
end do
end do
do i=1,4
print*,'suma',i, ' reda je'
print*, s(i)
end do
end
!Napisati program koji ce za unesene brojeve x i y te unesenu kvvdratnu matricu a reda x izracunati sumu elemenata kolone y,produkt svih elemenata
matrice,najmnaji el sporedne dij,najveci el gl,rezultate ispisati
program fizickiposo
real, allocatable::a(:,:)
real min,max,p,s
integer x,y,i,j
read*,x,y
allocate(a(x,x))
print*,"Unesi matricu"
do i=1,x
do j=1,x
read*, a(i,j)
end do
end do
do i=1,x
print*,(a(i,j),j=1,x)
end do
s=0
p=1

do i=1,x
do j=1,x
if( j==y) then
s=s+a(i,j)
end if
end do
end do
do i=1,x
do j=1,x
p=p*a(i,j)
end do
end do
min=a(1,x)
do i=1,x
do j=1,x
if (min>a(i,x+1-i)) then
min=a(i,x+1-i)
end if
end do
end do
max=a(1,1)
do i=1,x
do j=1,x
if (i==j .and. max<a(i,j)) then
max=a(i,j)
end if
end do
end do
print *, "Suma kolone ",y,"je ",s
print *, "produkt je ",p
print *, "Minimalni element sporedne dijagonale je ",min
print*,"Najveci element gl dijgonale je ",max
end
Operacije sa matricama, ugraene funkcije, (dodatni zadaci)
PRIMJER: 1
Napisati program u fortranu koji vri Multiplikaciju matrica dimenzija , A(3,3) i B(3,3). A zatim vrsi provjeru pomocu ugraene funkcije za
mnoenje matrica.
RJEENJE:
program mnozenje
!
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)
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 program mnozenje
UGRAENE FUNKCIJE ZA MAKSIMAL,MINIMALNI i SUMU ELEMENATA MATRICE
MAKSIMALNI ELEMENT MATRICE
Program 2
!
ovaj program ucitava matricu 3,3 i nalazi maksimalni elemenat
implicit none
integer:: i,j,X
real:: A(3,3)
print*,'----------------Unesite elemente matrice A -------------'
do i=1,3
print*,'unesi red',i
read*, (A(i,j),j=1,3)
end do
Print*,'elementi matrice A'
do i=1,3
print*, (A(i,j),j=1,3)
end do
10 format(2/)
X=MAXVAL (A)
PRINT*,'MAKSIMALNI ELEMENAT MATRICE JE',X
end program 2
MINIMALNI ELEMENAT MATRICE A 4,4
program vjezba3
!
ovaj program ucitava matricu 4,4 i nalazi minimalni elemenat
implicit none
integer:: i,j,X
real:: A(4,4)
print*,'----------------Unesite elemente matrice A -------------'
do i=1,4
print*,'unesi red',i
read*, (A(i,j),j=1,4)
end do
Print*,'elementi matrice A'
do i=1,4
print*, (A(i,j),j=1,4)
end do
10 format(2/)
X=MINVAL (A)
PRINT*,'MINIMALNI ELEMENAT MATRICE JE',X
end program vjezba3
SUMA ELEMENAT MATRICE
program vjezba4
!
ovaj program ucitava matricu 4,4 i nalazi sumu elemenata
implicit none
integer:: i,j,X
real:: A(4,4)
print*,'----------------Unesite elemente matrice A -------------'

do i=1,4
print*,'unesi red',i
read*, (A(i,j),j=1,4)
end do
Print*,'elementi matrice A'
do i=1,4
print*, (A(i,j),j=1,4)
end do
10 format(2/)
X=SUM(A)
PRINT*,'SUMA ELEMENAT MATRICE JE',X
end program vjezba4
PRIMJER 2:
Uitati matricu A(3,3) i matricu B (3,3), zatim nai zbir matrica kao matricu C i razliku kao matricu D
program vjezba2
!
ovaj program vrsi sabiranje i oduzimane matrica A(3,3)i B(3,3)
implicit none;
integer:: i,j,k;
real:: A,B,C,D
dimension A(3,3), B(3,3), C(3,3), D(3,3)
print*, '________________Unesi matricu A_________________'
do 10 i=1,3
do 10 j=1,3
print*, i,j
read*, A(i,j)
10 continue
print*, '________________Unesi matricu B_________________'
do 20 i=1,3
do 20 j=1,3
print*, i,j
read*, B(i,j)
20 continue
! Operacije sa matricama A i B
do 30 i=1,3
do 30 j=1,3
C(i,j)=A(i,j)+B(i,j)
D(i,j)=A(i,j)-B(i,j)
30 continue
Print*,'Zbir matrica A i B je matrica C'
do 40 i=1,3
Print*, (C(i,j),j=1,3)
40 continue
Print*,'Razlika matrica A i B je matrica D'
do 50 i=1,3
Print*, (D(i,j),j=1,3)
50 continue
stop
end program vjezba2
PRIMJER: 3
! Ucitati matricu AK(4,4) i matricu B(3,3),
! Naci zbir (ZE4) elemenata 4 kolone matrice AK
! Proizvod (PDB) dijagonalnih elemenata matrice B.
! Ako je dobiveni zbir ZE4 veci od dobivenog proizvoda PDB
! Izracunati razliku ZE4 i PDB u protivnom izracunati
! Proizvod dobivenog ZE4 i PDB
! Stampati ZE4 i PDB
Program matrice_AB
REAL,DIMENSION(4,4)::AK
INTEGER,DIMENSION (3,3)::B
Print*,'Unesi elemente matrice AK'
Read*,((AK(i,j),j=1,4),i=1,4)
Print*,'Unesi elemente matrice B'
Read*,((B(i,j),j=1,3),i=1,3)
ZE4=0
do i =1,4
ZE4=ZE4+AK(i,4)
end do
PDB=1.0

do i =1,3
PDB=PDB*B(i,i)
end do
If (ZE4.GT.PDB) THEN
R = ZE4-PDB
Print*,'Razlika je =',R
else
PRO=ZE4*PDB
Print*,'Proizvod je =',PRO
End if
Stop
End Program matrice_AB
PRIMJER 4:
Ucitati matricu A k tog reda gdje je k>3. Izracunati aritmeticku sredinu prva tri reda matrice A. Ispisati elemente matrice A i aritmeticku
sredinu.
Program asredina
implicit none;
integer::i,j,k
integer,parameter::max_dimenzija=10
real::A(max_dimenzija,max_dimenzija)
real::sredina
Print*,'Dimenzija kvadratne matrice A je kxk unesite dimenziju k'
read*,k
Print*,'unesite elemente matrice A'
do i=1,k
print*,'unesi red',i
read*,(A(i,j),j=1,k)
end do
print*,' '
do i=1,k
print*,(A(i,j),j=1,k)
end do
sredina=0.0
do i=1,3
do j=1,k
sredina=sredina+A(i,j)
end do
end do
sredina=sredina/(3.0*k)
print*,' '
print*,'Aritmeticka sredina prva tri reda matrice A je=',sredina
stop
end program asredina
PRIMJER:5
PROGRAM ZA NALAZENJE MAKSIMALNOG el na dijagonali matrice
Program maxel_na_dijagonali_matrice
implicit none;
integer::i,j,k
real::A,maksidijag
dimension A(4,4)
Print*,'unesite elemente matrice A'
do i=1,4
print*,'unesi red',i
read*,(A(i,j),j=1,4)
end do
print*,' '
do i=1,4
print*,(A(i,j),j=1,4)
end do
maksidijag=A(1,1)
do 10 i=1,4
if (maksidijag.lt.A(i,i))then
maksidijag=A(i,i)
end if
10 continue
print*,' '
print*,'Maksimalni element na dijagonali matrice A=',maksidijag

stop
end program maxel_na_dijagonali_matrice
PRIMJER:6
PROGRAM VRI PRONALAENJE maksimalnog elementa u matrici i minimalnog elementa na dijagonali matrice.
Program elementi
implicit none;
integer::i,j,k
real::A,maksielement,minieldijagonale
dimension A(4,4)
Print*,'unesite elemente matrice A'
do i=1,4
print*,'unesi red',i
read*,(A(i,j),j=1,4)
end do
print*,' '
print*,'------ ELEMENTI MATRICE A ----------'
do i=1,4
print*,(A(i,j),j=1,4)
end do
maksielement=A(1,1)
minieldijagonale=A(1,1)
do 10 i=1,4
do 10 j=1,4
if (maksielement.lt.A(i,j))then
maksielement=A(i,j)
end if
10 continue
do 20 i=1,4
if (minieldijagonale.gt.A(i,i))then
minieldijagonale=A(i,i)
end if
20 continue
print*,' '
print*,'(REZULTATI)'
print*,'Maksimalni element matrice A je=',maksielement
print*,'Minimalni element na dijagonali matrice A je=',minieldijagonale
stop
end program elementi
IMJER:7
Program sumaelemenata_matrice
implicit none;
integer, parameter::max_dimenzija=20
real::A(max_dimenzija,max_dimenzija)
real:: sumael=0.0
integer:: k,i,j
Print*,' Kvadratna matrica A je dimenzija k x k (unesite koliko je k)'
Read*,k
Print*,' Elemnti matrice A'
Print*,'Unesite elemente matrice A'
do i=1,k
print*,'unesi red',i
read*,(A(i,j),j=1,k)
end do
print*,' '
Print*,'Formirana matrica ima izgled'
do i=1,k
print*,(A(i,j),j=1,k)
end do
do i=1,k
do j=1,k
sumael=sumael+A(i,j)
end do
end do
Print*,' Suma elemenata matrice A je:',sumael
stop
end program sumaelemenata_matrice
PRIMJER:8

Program trag_matrice
implicit none;
integer, parameter::max_dimenzija=20
real::A(max_dimenzija,max_dimenzija)
real:: trag=0.0
integer:: k,i,j
Print*,' Kvadratna matrica A je dimenzija k x k (unesite koliko je k)'
Read*,k
Print*,' Elemnti matrice A'
Print*,'Unesite elemente matrice A'
do i=1,k
print*,'unesi red',i
read*,(A(i,j),j=1,k)
end do
print*,' '
Print*,'Formirana matrica ima izgled'
do i=1,k
print*,(A(i,j),j=1,k)
end do
do i=1,k
trag=trag+A(i,i)
end do
Print*,' Trag ili zbir el na glavnoj dijagonali matrice A je:',trag
stop
end program trag_matrice
PRIMJER:9
PROIZVOD EL MATRICE I minimalni elemenat na sporednoj dijagonali
Program proizvod_minelspdijagonale
implicit none;
integer, parameter::max_dimenzija=20
real::A(max_dimenzija,max_dimenzija)
real:: proizvodel=1.0, minielspdijagonale
integer:: k,i,j,jmin
Print*,' Kvadratna matrica A je dimenzija k x k (unesite koliko je k)'
Read*,k
Print*,' Elemnti matrice A'
Print*,'Unesite elemente matrice A'
do i=1,k
print*,'unesi red',i
read*,(A(i,j),j=1,k)
end do
print*,' '
Print*,'Formirana matrica ima izgled'
do i=1,k
print*,(A(i,j),j=1,k)
end do
minielspdijagonale=A(1,k)
do 10 j=1,k
do 20 i=1,k
proizvodel=proizvodel*A(i,j)
20 continue
if(A(j,k+1-j).le.minielspdijagonale) then
minielspdijagonale=A(j,k+1-j)
jmin=j
end if
10 continue
Print*,' Proizvod el matrice A je:',proizvodel
Print*,' Minimalni element na sporednoj dijagonali matrice A je:',minielspdijagonale
stop
end program proizvod_minelspdijagonale
PRIMJER:10
PROIZVOD EL MATRICE I maksimalni elemenat na sporednoj dijagonali
Program proizvod_maxelspdi
implicit none;
integer, parameter::max_dimenzija=20
real::A(max_dimenzija,max_dimenzija)

real:: proizvodel=1.0, maxelspdi


integer:: k,i,j,jmax
Print*,' Kvadratna matrica A je dimenzija k x k (unesite koliko je k)'
Read*,k
Print*,' Elemnti matrice A'
Print*,'Unesite elemente matrice A'
do i=1,k
print*,'unesi red',i
read*,(A(i,j),j=1,k)
end do
print*,' '
Print*,'Formirana matrica ima izgled'
do i=1,k
print*,(A(i,j),j=1,k)
end do
maxelspdi=A(1,k)
do 10 j=1,k
do 20 i=1,k
proizvodel=proizvodel*A(i,j)
20 continue
if(A(j,k+1-j).gt.maxelspdi) then
maxelspdi=A(j,k+1-j)
jmax=j
end if
10 continue
Print*,' Proizvod el matrice A je:',proizvodel
Print*,' Maksimalni element na sporednoj dijagonali matrice A je:',maxelspdi
stop
end program proizvod_maxelspdi
PRIMJER:11
PROGRAM PRONALAZI MINIMALNI ELEMENAT U MATRICI
Program minimalnielement_matrice
implicit none;
integer::i,j,k
real::A,minimalnielmatrice
dimension A(4,4)
Print*,'unesite elemente matrice A'
do i=1,4
print*,'unesi red',i
read*,(A(i,j),j=1,4)
end do
print*,' '
print*,'------ ELEMENTI MATRICE A ----------'
do i=1,4
print*,(A(i,j),j=1,4)
end do
minimalnielmatrice=A(1,1)
do 10 i=1,4
do 10 j=1,4
if (minimalnielmatrice.gt.A(i,j))then
minimalnielmatrice=A(i,j)
end if
10 continue
print*,' '
print*,'(REZULTATI)'
print*,'Minimalni element matrice A je=',minimalnielmatrice
stop
end program minimalnielement_matrice

PRIMJER:12
Ucitati brojeve n i k te kvadratnu Matricu A reda n. Izracunaj sumu k tog reda i proizvod svih elemenata matrice. Ispisi dobivene vrijednosti.
Program proizvod_zbirkreda
implicit none;
integer, parameter::max_dimenzija=20
real::A(max_dimenzija,max_dimenzija)
real:: proizvodel=1.0,suma=0.0
integer:: k,i,j,n
Print*,' Kvadratna matrica A je dimenzija n x n (unesite koliko je n)'
Read*,n
Print*,' Unesi broj k'
Read*,k
Print*,'Unesite elemente matrice A'
do i=1,n
print*,'unesi red',i
read*,(A(i,j),j=1,n)
end do
print*,' '
Print*,'Formirana matrica ima izgled'
do i=1,n
print*,(A(i,j),j=1,n)
end do
do 10 i=1,n
do 20 j=1,n
proizvodel=proizvodel*A(i,j)
20 continue
10 continue
do 40 j=1,n
suma=suma+A(k,j)
40 continue
Print*,' Proizvod el matrice A je:',proizvodel
Print*,' Suma k tog reda matrice A je:',suma
stop
end program proizvod_zbirkreda