(Bahasa pemrograman: bebas)Buatlah dan rancanglah sebuah program yang menerima input

Berikut ini adalah pertanyaan dari unknown pada mata pelajaran TI untuk jenjang Sekolah Dasar

(Bahasa pemrograman: bebas)Buatlah dan rancanglah sebuah program yang menerima input berupa pecahan dalam bentuk p/q, dan menghasilkan output informasi bahwa pecahan p/q tersebut sudah dalam bentuk paling sederhana atau belum.

Program harus dapat menerima input berupa beberapa pecahan sekaligus, misalnya:
1/2 6/8 5/10
dan untuk input tersebut, program menghasilkan output:
1/2: sederhana.
6/8: belum sederhana.
5/10: belum sederhana.

Jawaban dan Penjelasan

Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.

Kode Program (Python)

# pecahan-sederhana.py
# oleh hy

def fpb(a: int, b: int) -> int:
   """Faktor Persekutuan terBesar"""
   if not (isinstance(a, int) and isinstance(b, int)):
       raise TypeError
   # Baik a maupun b harus positif
   a = abs(a); b = abs(b)
   if a < b: # swap
       return fpb(b, a)
   if b == 0:
       return a
   return fpb(b, a % b)

def program_utama():
   print('\nMasukkan satu atau beberapa pecahan.')
   print('Untuk mengakhiri, tekan Enter.')
   print('Notasi pecahan: p/q (tanpa spasi sebelum dan sesudah "/").')
   print('p dan q harus merupakan bilangan bulat.\n')
   while True:
       try:
           inp = input('input => ').strip(); delim = ' '
           if inp == '':
               break;
           if inp.count(',') > 0:
               delim = ','
           for str_pecahan in inp.split(delim):
               p, q = [int(x) for x in str_pecahan.strip().split('/')]
               fpbnya = fpb(p, q)
               print(f'{p}/{q} : {"sederhana." if fpbnya == 1 else "belum sederhana."}')
       except Exception as e:
           print(e)
           print("[ERR] Terdapat kesalahan pada input, atau kesalahan lain.")
       else:
           print()
   print()

if __name__ == '__main__':

   program_utama()
____________

Pembahasan

Pecahan p/qsudah dalam bentuk paling sederhanajika p dan q saling prima (koprima). Artinya, FPB dari p dan q adalah 1.
Lagi-lagi kita membicarakan tentang FPB ya.

Oleh karena itu, penyelesaian persoalan ini dapat dikaitkan dengan persoalan di tautan yomemimo.com/tugas/51884084. Kita gunakan method/function fpb(a, b).

Pada dasarnya, hanya dibutuhkan pemeriksaan bahwa FPB p dan q adalah 1. Jika terpenuhi, maka pecahan p/q sudah dalam bentuk paling sederhana.

Permasalahan lain adalah bahwa program yang dibangun dituntut untuk dapat menerima beberapa input pecahan sekaligus, dengan dipisahkan delimiter berupa spasi. Pada program di atas, saya tambahkan satu jenis delimiter lagi, yaitu koma.

Dari input, dibutuhkan 2 kali proses splitting:

  • pertama: memisahkan pecahan-pecahan dari string input, dan
  • kedua: memisahkan pembilang dan penyebut dari setiap pecahan.

____________

Contoh Hasil Eksekusi Program

Masukkan satu atau beberapa pecahan.
Untuk mengakhiri, tekan Enter.
Notasi pecahan: p/q (tanpa spasi sebelum dan sesudah "/").
p dan q harus merupakan bilangan bulat.

input => 3/6
3/6 : belum sederhana.

input => 1/2 6/8 5/10
1/2 : sederhana.
6/8 : belum sederhana.
5/10 : belum sederhana.

input => 2/3,3/4,4/5
2/3 : sederhana.
3/4 : sederhana.
4/5 : sederhana.

input => 200/100
200/100 : belum sederhana.

input =>

Kode Program (Python)# pecahan-sederhana.py# oleh hydef fpb(a: int, b: int) -> int:    

Semoga dengan pertanyaan yang sudah terjawab oleh henriyulianto dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.

Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact

Last Update: Fri, 25 Nov 22