Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Fortran: Korkeintaan vähintään

JRokka [29.11.2019 11:52:48]

#

Katsotaan, mitkä luvut ovat vähintään ja korkeintaan luku. Katsotaan samalla, ovatko kaikki luvut enintään tai vähintään luku.

Koodi

Program Korkeintaan_vahintaan
implicit NONE

integer :: luku !Luku, johon verrataan
integer :: v, v_mr, v_mr_2, v_pr  !Vähintään muuttujat
integer :: k, k_mr, k_mr_2, k_pr !Korkeintaan muuttujat
integer :: x !Taulukon indeksi
integer :: numerot(10)
v = 1 !Oletetaan, että kaikki luvut ovat vähintään.
k = 1 !Oletetaan, että kaikki luvut ovat korkeintan.
v_mr = 0
k_mr = 0
v_pr = 0 !Pisin peräkkäisten lukujen määrä, jotka ovat vähintään luku
k_pr = 0 !Pisin peräkkäisten lukujen määrä, jotka ovat enintään luku
v_mr_2 = 0 !Lukujen määrä, jotka ovat vähintään luku
k_mr_2 = 0 !Lukujen määrä, jotka ovat korkeintaan luku
luku = 50
!Luodaan luvut.
numerot = (/ 10, 5, 8, 55,85,24,28,23,33,51 /)
!Katsotaan, ovatko taulukon luvut enintään, vähintään kuin luku tai ei kumpaakaan.
do x = 1,10
 if (numerot(x) > luku) then
  k = 0
 end if
 if (numerot(x) < luku) then
  v = 0
 end if
end do
!Lasketaan lukujen määrä, jotka ovat vähintään tai enintään kuin luku.
!Lasketaan myös pisin perättäisten lukujen määrä.
do x = 1,10
 if (numerot(x) >= luku) THEN
  !Oletetaan, että luku on vähintään.
  v_mr = v_mr + 1
  v_mr_2 = v_mr_2 + 1
  if (v_mr > v_pr) THEN
   !Pidempi vähintään jono löytyi
   v_pr = v_mr
  end if
  if (k_mr > k_pr) THEN
   !Pidempi enintään jono löytyi
   k_pr = k_mr
  end if
  k_mr = 0
 end if
 if (numerot(x) <= luku) THEN
  !Oletetaan, että luku on enintään.
  k_mr_2 = k_mr_2 + 1
  k_mr = k_mr + 1
  !Pidempi vähintään jono löytyi
  if (v_mr > v_pr) THEN
   v_pr = v_mr
  end if
  !Pidempi  enintään jono löytyi
  if (k_mr > k_pr) THEN
   k_pr = k_mr
  end if
  v_mr = 0
 end if
end do
!Näytetään tulokset.
print *,"Pisin peräkkäinen vähintään:",v_pr
print *,"Pisin peräkkäinen korkeintaan:",k_pr
print *,"Vähintään määrä:",v_mr_2
print *,"Korkeintaan määrä:",k_mr_2

if (k == 1) THEN
 print *,"Korkeintaan"
elseif (v == 1) THEN
 print *,"Vähintään"
else
 print *,"Sekalainen"
end if
end program Korkeintaan_vahintaan

Vastaus

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

Tietoa sivustosta