Soal Pemograman Pascal : IP Converting

Soal ini juga pernah gw terbitin di http://osn08kom.blogspot.com

Tau gak IP address?? Kalau bahasa umumnya, IP address itu seperti alamat rumah kita didunia maya. Dengan IP address kita bisa dikenal di internet saat browsing, chatting, dll. Tapi tau gak kalau sebenarnya kita bisa menentukan lokasi komputer cuma dari alamat IP nya? Bagi yang tau tentang IP, pasti tau dong kalau kita bisa mengecek asal IP address dengan mengunjungi situs tertentu atau dengan aplikasi bantuan. Kita fokus tentang situsnya.

Situs yang bisa menginformasikan asal IP address ada banyak (googling aja sendiri!) tapi metodenya sama: mencocokan suatu IP address dengan database. Nah, disini masalah databasenya: IP address terbagi kedalam 4 sub-block. Kalau tiap sub-block harus dicocokan, bisa repot.

Karena itu database ini memakai cara yang lain, yaitu dengan menghitung IP number dari IP address tersebut baru dicocokan dengan database. Contoh: IP address 202.186.13.4 mempunyai IP number 3401190660. Sebuah negara memiliki range IP number yang berbeda dengan range IP number negara lain. Dengan IP number tadi, diketahui bahwa IP tersebut berasal dari MALAYSIA.

Cara menghitung IP address menjadi IP number begini: anggap keempat blok IP address sebagai w.x.y.z, maka rumusnya

IP Number = 16777216 X w + 65536 X x + 256 X y + z

sehingga perhitungan untuk contoh yang tadi:

IP Number = 16777216 X 202 + 65536 X 186 + 256 X 13 + 4
= 3388997632 + 12189696 + 3328 + 4
= 3401190660

Kemudian databasenya memiliki format seperti ini:

IP Number Kode Negara Nama Negara
3401023488..3401056255 TH THAILAND
3401056256..3401400319 MY MALAYSIA
3401408512..3401416703 HK HONG KONG
3401416704..3401420799 KR KOREA
3401441280..3401449471 PH PHILIPPINES
3401441280..3401515263 MY MALAYSIA

Bisa dilihat di database diatas kalau MALAYSIA punya 2 range IP number. Tapi karena sama-sama Malaysia, 2 itu dianggap sama. Bisa dilihat juga kalau database sudah mengurutkan alamat IP dari kecil ke besar.

FORMAT MASUKAN
Diawali dengan sebuah bilangan T dan diikuti dengan T baris database berisi M..N(range IP number),Kode Negara, dan Nama Negara. Sebuah negara bisa memiliki 2 range IP number atau bisa lebih. Lalu sebuah bilangan O (1 <= O <= 100) dan dikuti O buah IP address dengan format w.x.y.z. FORMAT KELUARAN
O buah Kode Negara dan Nama Negara asal IP address. Antara Kode & Nama Negara dipisahkan sebuah spasi.

CONTOH MASUKAN
6
3401023488..3401056255 TH THAILAND
3401056256..3401400319 MY MALAYSIA
3401408512..3401416703 HK HONG KONG
3401416704..3401420799 KR KOREA
3401441280..3401449471 PH PHILIPPINES
3401441280..3401515263 MY MALAYSIA
5
202.186.13.4
202.183.170.13
202.186.13.10
202.189.107.17
202.189.224.10

CONTOH KELUARAN
MY MALAYSIA
TH THAILAND
MY MALAYSIA
KR KOREA
PH PHILIPPINES

Ehem,ehem. Sori lagi deh, soalnya cuma bikin satu test case. Tapi yang penting kan udah paham caranya. Kalau belum puas dengan soalnya, nih gw tambahin sedikit.

Kalau misalnya kita dikasih suatu IP number, bagaimana caranya untuk mengembalikan ke IP address? Cari sendiri caranya dan dibawah ini test case nya (yang ini bisa bikin banyak).

FORMAT MASUKAN
x baris IP number dengan jumlah yang tidak ditentukan.

FORMAT KELUARAN
x baris IP address.

CONTOH MASUKAN
3401190660
3401034253
3401190666
3401411345
3401441290
3041441290
3092458469
3546273834
3928475645
2839415365
3940284945
4728394087
2849573823
3948203887
3423432434
2123232498
2342354623

CONTOH KELUARAN
202.186.13.4
202.183.170.13
202.186.13.10
202.189.107.17
202.189.224.10
181.72.182.10
184.83.43.229
211.95.216.42
234.39.199.253
169.62.10.69
234.219.250.17
25.213.145.103
169.217.11.191
235.84.207.111
204.13.110.242
126.141.244.242
139.157.126.191

Cukup deh. Kalau ada yang perlu ditanyakan, jangan malu untuk ngomong di milis (siapa yang malu?). Sekian, banyak maaf kalau ada salah-salah kata. Happy Programming!

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>