Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Fortran: Nouseva ja laskeva

JRokka [29.11.2019 14:12:06]

#

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ä.

Koodi

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 NousevaLaskeva

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta