Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

1 Treci blok

2 Nizovi - nastavak
1. Napisati program koji sortira niz rastuce (Bubble sort).

Program: program bubble_sort


implicit none

integer, parameter :: MAX_DUZINA_NIZA = 50


real, dimension(MAX_DUZINA_NIZA) :: a
integer :: n, i, j, temp

print*, ’Duzina niza?’


read*, n

print*, ’Elementi niza?’


read*, (a(i), i = 1, n)

print*, ’Pre sortiranja: ’, (a(i), i = 1, n)


do i = n, 2, -1
do j = 1, i - 1
if(a(j) > a(j + 1)) then
temp = a(j)
a(j) = a(j + 1)
a(j + 1) = temp
endif
enddo
enddo

print*, ’Posle sortiranja: ’, (a(i), i = 1, n)

end program bubble_sort

3 Matrice
2. Sledeci program ilustruje osnovni rad sa matricama:

1
Program: ! Ilustruje osnovni rad sa matricama
program matrice_uvod
implicit none

integer, dimension(2, 3) :: a, b
integer :: i, j

a(1, 1) = 1; a(1, 2) = 2; a(1, 3) = 3


a(2, 1) = 4; a(2, 2) = 5; a(2, 3) = 6

! Necitiljivo
print*, ’Necitljiv zapis:’
print*, a

!print*, ((a(i, j),’\n’, j = 1, 3), i = 1, 2)


print*, ’Citljiv zapis:’
do i = 1, 2
print*, (a(i, j), j = 1, 3)
enddo

print*, ’Unesite element matrice b:’


read*, ((b(i,j), j = 1, 3), i = 1, 2)
print*, ’Uneta matrica:’
do i = 1, 2
print*, (b(i, j), j = 1, 3)
enddo

end program matrice_uvod


3. Napisati program koji izracunava sumu elemenata matrice A dimenzije n x m.

2
Program: program suma_elemenata_matrice
implicit none

integer, parameter :: MAX_DIMENZIJA = 10


real :: a(MAX_DIMENZIJA, MAX_DIMENZIJA)
real :: suma = 0.0
integer :: n, i, j

print*, ’Dimenzija kvadratne matrice?’


read*, n

print*, ’Elementi matrice?’


read*, ((a(i, j), j = 1, n), i = 1, n)

do i = 1, n
do j = 1, n
suma = suma + a(i, j)
enddo
enddo

print*, ’Suma je: ’, suma

end program suma_elemenata_matrice


4. Napisati program koji izracunava trag kvadratne matrice A dimenzije n.

Program: program trag_matrice


implicit none

integer, parameter :: MAX_DIMENZIJA = 10


real :: a(MAX_DIMENZIJA, MAX_DIMENZIJA)
real :: trag = 0.0
integer :: n, i, j

print*, ’Dimenzija kvadratne matrice?’


read*, n

print*, ’Elementi matrice?’


read*, ((a(i, j), j = 1, n), i = 1, n)

do i = 1, n
trag = trag + a(i, i)
enddo

print*, ’Trag je: ’, trag

end program trag_matrice


5. Napisati program koji racuna sumu elemenata ispod glavne dijagonale kvadratne matrice A
dimenzije n x n (n ≤ 10).

3
Program: program suma_ispod_gl_dijag
implicit none

integer, parameter :: MAX_DIMENZIJA = 10


real, dimension(MAX_DIMENZIJA, MAX_DIMENZIJA) :: a
integer :: n ! dimenzija matrice
real :: suma = 0.0 ! suma
integer :: i, j
! brojaci u petljama

! Ucitava se dimenzija matrice


write(*, *) ’Dimezija matrice n = ?’
read(*, *) n

! Ucitavaju se elementi matrice


write(*, *) ’Elementi matrice?’
read(*, *) ((a(i, j), j = 1, n), i = 1, n)

! Izracunava se suma trazenih elemenata


do i = 2, n
do j = 1, i - 1
suma = suma + a(i, j)
enddo
enddo

write(*, *) ’Suma elemenata ispod glavne dijagonale: ’, suma

end program suma_ispod_gl_dijag


6. Napisati program koji transponuje zadatu kvadratnu matricu A celih brojeva, dimenzije n x
n (n ≤ 10).

4
Program: program transponovanje
implicit none

integer, parameter :: MAX_DIMENZIJA = 10


integer, dimension(MAX_DIMENZIJA, MAX_DIMENZIJA) :: a
integer :: n ! dimenzija matrice
integer :: i, j
! brojaci u petljama
integer :: pom
! pomocna promenljiva prilikom razmene

! Ucitava se dimenzija matrice


write(*, *) ’Dimezija matrice n = ?’
read(*, *) n

! Ucitavaju se elementi matrice


write(*, *) ’Elementi matrice?’
read(*, *) ((a(i, j), j = 1, n), i = 1, n)

! Transponuje se matrica
do i = 2, n
do j = 1, i - 1
pom = a(i, j)
a(i, j) = a(j, i)
a(j, i) = pom
enddo
enddo

write(*, *) ’Nakon transponovanja: ’


do i = 1, n
write(*, *) (a(i, j), j = 1, n)
enddo
7. Napisati program koji izracunava matricu

C(n, r) = A(n, m) ∗ B(m, r)

ako su matrice A i B date (unose se sa ulaza).

5
Program: program mnozenje_matrica
implicit none

integer, parameter :: MAX_DIMENZIJA = 10


real, dimension(MAX_DIMENZIJA, MAX_DIMENZIJA) :: a, b, c
integer :: n, m, r ! dimenzije matrica
integer :: i, j, k ! brojaci u petljama

print*, ’Dimenzije matrice prve matrice?’


read*, n, m

print*, ’Broj kolona druge matrice?’


read*, r

print*, ’Prva matrica?’


read*, ((a(i, j), j = 1, m), i = 1, n)

print*, ’Druga matrica?’


read*, ((b(i, j), j = 1, r), i = 1, m)

do i = 1, n
do j = 1, r
c(i, j) = 0 ! VAZNO, inicijalizacija tekuceg elementa na 0
do k = 1, m
c(i, j) = c(i, j) + a(i, k) * b(k, j)
end do
end do
end do

print*, ’Rezultat:’
do i = 1, n
print*, (c(i, j), j = 1, r)
enddo

end program mnozenje_matrica

4 Funkcije i Procedure
8. Napisati funkciju koja racuna faktorijel prirodnog broja n.

6
Program: function faktorijel(n) result (rezultat)
implicit none

integer, intent(in) :: n ! ulaz


integer :: rezultat ! izlaz
integer :: i
! brojac, lokalna promenljiva

if(n < 0) stop ’Broj ciji se faktorijel racuna mora biti nenegativan’

rezultat = 1
do i = 1, n
rezultat = rezultat * i
enddo

end function faktorijel ! kraj funkcije

program ffaktorijel
implicit none

integer :: a
integer :: faktorijel ! I funkciju treba deklarisati

print*, faktorijel(4)
print*, faktorijel(5)

print*, "a=?"
read*, a

print*, faktorijel(a)

end program ffaktorijel

9. Napisati program koji sortira niz rastuce, koristeci procedure za razmenu vrednosti dva broja
i za sortiranje (Selection sort).

7
Program: subroutine razmeni(a, b)
implicit none

real, intent(inout) :: a, b
real :: temp

temp = a; a = b; b = temp

end subroutine razmeni

! Procedura sortira niz realnih brojeva duzine n,


! primenom selection sort algoritma, rastuce.
subroutine selectionSort(A, n)
implicit none

integer, intent(in) :: n
real, dimension(n), intent(inout) :: A
integer :: i, j ! Brojaci u petljama, lokalne promenljive

do i = 1, n - 1
do j = i + 1, n
if(A(i) > A(j)) call razmeni(A(i), A(j))
end do
end do

end subroutine selectionSort

! ...
program pselection_sort
implicit none

integer, parameter :: MAX_DUZINA_NIZA = 50


real, dimension(MAX_DUZINA_NIZA) :: a
integer :: n, i

print*, ’Duzina niza?’


read*, n

print*, ’Elementi niza?’


read*, (a(i), i = 1, n)

print*, ’Pre sortiranja: ’, (a(i), i = 1, n)


call selectionSort(a, n)
print*, ’Posle sortiranja: ’, (a(i), i = 1, n)

end program pselection_sort

You might also like