Katsotaan, onko taulukko laskeva, nouseva vai tasainen. Ja katsotaan, mikä on taulukon viimeinen laskeva, nouseva ja tasainen luku. Lisäksi katsotaan, ovatko kaikki luvut eriä.
Program NousevaLaskeva
implicit none
integer :: luvut(10)
integer :: n, l, t, e !Nouseva, laskeva, tasainen, erit
integer :: x,y,temp !Taulukon indeksi
integer :: na, la, ta, ea !Mihin asti taulukko on nouseva tai laskeva
!Oletetaan, että taulukon luvut ovat nousevia tai laskevia, jos muuta ei tule ilmi.
na = 0
la = 0
ta = 0
ea = 0
e = 1
n = 1
l = 1
t = 1
luvut = (/ 122, 110,95, 77, 74, 70, 66, 64, 63, 60 /)
!Käydään taulukko läpi.
!Verrataan aina edelliseen lukuun.
do x = 2, 10
if (luvut(x) < luvut(x-1)) THEN
!Taulukko ei ole nouseva eikä tasainen
if (l /= 0) THEN
la = x
end if
t = 0
n = 0
end if
if (luvut(x) > luvut(x-1)) THEN
!Taulukko ei ole laskeva eikä tasainen
if (n /= 0) THEN
na = x
end if
l = 0
t = 0
end if
if (luvut(x) == luvut(x-1)) THEN
!Taulukko ei ole laskeva eikä nouseva
if (t /= 0) THEN
ta = x
end if
n = 0
l = 0
end if
end do
!Katsotaan ovatko kaikki luvut eriä.
!Lajitellaan taulukko.
do x = 1,9
do y = x+1,10
if (luvut(x)>luvut(y)) THEN
temp = luvut(x)
luvut(x)=luvut(y)
luvut(y)=temp
end if
end do
end do
do x = 2,10
if (luvut(x) == luvut(x-1)) THEN
!Vähintään kaksi lukua ovat samoja.
e = 0
end if
end do
!Näytetään tulos.
if (t == 1) THEN
print *,"Tasainen"
else if (n ==1) THEN
print *,"Nouseva"
else if (l == 1) THEN
print *,"Laskeva"
else
print *,"Sekalainen"
end if
if (e == 1) THEN
print *,"Kaikki luvut ovat eriä."
end if
!Näytetään viimeinen nouseva, laskeva ja jne.
print *,"Viimeinen nouseva",na
print *,"Viimeinen laskeva",la
print *,"Viimeinen tasainen",ta
end program NousevaLaskevaAihe on jo aika vanha, joten et voi enää vastata siihen.