Tugas Alpro Buatlah sebuah program (Python/C++) yang dapat menentukan jenis barisan

Berikut ini adalah pertanyaan dari 4dministraktor pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas

Tugas AlproBuatlah sebuah program (Python/C++) yang dapat menentukan jenis barisan bilangan (aritmetika atau geometri, atau bukan keduanya) dari input yang berupa string dari barisan bilangan.
Contoh:
Input: 3, 7, 11, 15, 19
Output: Barisan aritmetika

_________________
Mohon bantuannya. Terima kasih.

Jawaban dan Penjelasan

Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.

Kode Program (Python)

def info_barisan(barisan: list) -> tuple:
   jenis = [
       "BARISAN ARITMETIKA",
       "BARISAN GEOMETRI",
       "BUKAN BARISAN ARITMETIKA ATAU GEOMETRI",
       "TIDAK DAPAT DITENTUKAN"
   ]
   # Jika ukuran list barisan kurang dari 3,
   # maka jenis barisan tidak dapat ditentukan
   if (len(barisan) < 3): return (jenis[3], "")

   # Pemeriksaan suku-suku
   # Asumsikan barisan adalah barisan aritmetika
   aritmetika = True
   beda = barisan[1] - barisan[0]
   for i in range(1, len(barisan)-1):
       if (barisan[i+1] - barisan[i] != beda):
           aritmetika = False
           break
   # Jika bukan barisan aritmetika,
   # maka asumsikan barisan adalah barisan geometri.
   if (not aritmetika):
       geometri = True
       rasio = barisan[1] / barisan[0]
       for i in range(1, len(barisan)-1):
           if (barisan[i+1] / barisan[i] != rasio):
               geometri = False
               break
   # Pengembalian nilai jenis barisan
   # beserta informasi suku pertama dan beda/rasio
   str_info = f'suku pertama = {barisan[0]} dan '
   str_info += f'{"beda" if aritmetika else "rasio"} = '
   str_info += f'{str(beda) if aritmetika else str(rasio)}'
   return (jenis[0], str_info) if aritmetika else (
       (jenis[1], str_info) if geometri else (jenis[2], "")
   )

### Program Utama
if __name__ == '__main__':
   print("\nMenentukan Jenis Barisan Bilangan")
   print("=================================")
   barisan = [float(item) for item in input("Input barisan (dipisahkan koma): ").split(",")]
   info_barisan_bilangan = info_barisan(barisan)
   print(f"=> Jenis barisan bilangan: {info_barisan_bilangan[0]}")
   if (info_barisan_bilangan[1] != ""):
       print(f"   dengan {info_barisan_bilangan[1]}")
### Akhir Program Utama
_________________

Pembahasan

Untuk persoalan ini, secara garis besar algoritmanya adalah:

  1. Baca input barisan bilangan
  2. Jika barisan bilangan (dari input) kurang dari 3 suku, maka jenis barisan bilangan tidak dapat ditentukan.
  3. Jika sebaliknya:
    1. Apakah barisan bilangan merupakan barisan aritmetika?
    2. Jika bukan, apakah barisan bilangan merupakan barisan geometri?
  4. Output jenis barisan bilangan (beserta informasi).

Pada penentuan jenis barisan, pertama-tama diasumsikan barisan bilangan merupakan barisan aritmetika. Lalu, beda antar suku dibandingkan. Jika terdapat beda/selisih yang tidak sama dengan beda/selisih sebelumnya, maka barisan tersebut bukan barisan aritmetika.

Lanjutkan dengan asumsi bahwa barisan bilangan merupakan barisan geometri. Lalu, rasio antar suku dibandingkan. Jika terdapat rasio yang tidak sama dengan rasio sebelumnya, maka barisan tersebut bukan barisan geometri.

Jika barisan tersebut bukan barisan aritmetika maupun geometri, maka jenis barisan tidak diketahui. Mungkin barisan bilangan berjenis khusus. Hal ini tidak perlu kita selidiki lebih lanjut, karena berada di luar ruang lingkup permasalahan. Yang penting, output-kan saja bahwa barisan bilangan bukan berjenis barisan aritmetika maupun geometri.

Silahkan amati alur program di atas. Saya rasa, komentar-komentar pada program sudah cukup dapat menjelaskannya.

Contoh hasil eksekusi dapat dilihat pada gambar. Pada contoh terakhir, saya inputkan barisan bilangan Fibonacci. Output yang diharapkan adalah barisan bukan berjenis aritmetika atau geometri.

Kode Program (Python)def info_barisan(barisan: list) -> tuple:    jenis = [        Kode Program (Python)def info_barisan(barisan: list) -> tuple:    jenis = [        Kode Program (Python)def info_barisan(barisan: list) -> tuple:    jenis = [        Kode Program (Python)def info_barisan(barisan: list) -> tuple:    jenis = [        

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: Sat, 05 Nov 22