Sebenernya ini cuma mau iseng. ceritanya tadi sore ujian praktik pemrograman. ujiannya yaitu membuat program menghitung magnitude surface dan magnitude body dengan membaca file msurface.txt yang isinya kurang lebih seperti berikut:
15488052729615
46770084859003
62487055425067
13547442972695
58162545504627
24143482908292
86790285834321
11612273239874
28340512226312
95002196565407
76556644113071
46010964374649
70524132674941
(hanya sebagian, file asli dari bapak dosen ada 1000 baris)
ketentuannya
1. ambil 3 karakter yang dimulai dari karakter ke 7 setiap barisnya.
2. magnitude surface adalah 3 karakter yang diambil dibagi 100
3. -jika ms </= 2.86 maka mb=ms+1.33
-jika 2.86<ms</=4.90 maka mb=((0.33*ms)+(3.91))
-jika 6.27<ms</=7.00 maka mb=6.00
-jika ms>7 maka mb=0.00
4. jika terdapat angka 9999 pada 4 digit pertama dalam 1 baris maka, baris tersebut dan baris2 dibawahnya tidak perlu dihitung(program berhenti disini)
sehingga program yang tadi berhasil saya buat yaitu sebagai berikut:
!#################################################################################################################3
program detalia_nurutami
implicit none
real :: mb,ms !artinya mb dan ms merupakan bilangan real
integer ::i,x,no,n,a,b !artinya i,x,no,a,b merupakan integer
open(10,file='msurface.txt') !10 adalah msurface.txt
open(11,file='detalia_nurutami.hsl') !11 adalah file detalia_nurutami.hsl
write(11,12) !tulis pada file detalia_nurutami.hsl dengan format 12
12 format (4x,'|',3x,'No',4x,'|',4x,'ms',3x,'|',6x,'mb',4x,'|') !format 12 untuk penulisan pada file detalia_nurutami.hsl
do b=1,1000 !lakukan looping dari 1 sampai 1000
read(10,44)a,x !baca file m.surface.txt dengan format 44
44 format (i4,2x,i3) !format 44
if (a==9999) then !jika a=9999 exit
exit
end if
ms=x/100.
if (ms.le.2.86) then
mb=ms+1.33
else if (2.86.lt.ms.and.ms.le.4.90) then
mb=((0.67*ms)+(2.28))
else if(4.90.lt.ms.and.ms.le.6.27) then
mb=((0.33*ms)+(3.91))
else if(6.27.lt.ms.and.ms.le.7.00) then
mb=6.00
else if (ms.gt.7.) then
mb=0.00
end if
write(*,20)b,ms,mb
write(11,20)b,ms,mb
20 format (4x,'|',3x,i3,3x,'|',3x,f4.2,2x,'|',4x,f4.2,4x,'|')
end do
write (*,39)
write (11,39)'mb=0.00 adalah ms>7'
39 format (7x,a18)
write(11,13)
13 format('selamat program berhasil')
close (11)
close (10)
stop
end program detalia_nurutami
!###################################################################################################################
dan hasilnya yaitu sebagai berikut
-----------------------------------------------
| No | ms | mb |
-----------------------------------------------
| 1 | 3.83 | 4.85 |
| 2 | 3.83 | 4.85 |
| 3 | 3.83 | 4.85 |
| 4 | 3.83 | 4.85 |
| 5 | 3.83 | 4.85 |
| 6 | 3.83 | 4.85 |
| 7 | 3.83 | 4.85 |
| 8 | 3.83 | 4.85 |
| 9 | 3.83 | 4.85 |
| 10 | 3.83 | 4.85 |
| 11 | 3.83 | 4.85 |
| 12 | 3.83 | 4.85 |
| 13 | 3.83 | 4.85 |
| 14 | 3.83 | 4.85 |
| 15 | 3.83 | 4.85 |
.
.
.
.
. s/d
| 594 | 3.83 | 4.85 |
| 595 | 3.83 | 4.85 |
| 596 | 3.83 | 4.85 |
| 597 | 3.83 | 4.85 |
| 598 | 3.83 | 4.85 |
| 599 | 3.83 | 4.85 |
selamat program berhasil
!#########################################################
dari hasil tersebut, berarti angka 9999 ada di baris ke 600
terimakasih semoga bermanfaat.
wasalamualaikum wr.wrb
Tidak ada komentar:
Posting Komentar