Pembahasan Soal Shift No 2 Modul 3 PPT

Assalamualaikum Wr. Wb.

Hai bro.. Aku lagi baik hati nih.. he3.. Aku mau share sedikit ilmu tentang soal shift modul 3 PPT. Udah tahu soalnya? Begini:

SOAL

Buatlah suatu program konversi dari bilangan desimal ke bilangan basis sembarang! Program tersebut mempunyai keunggulan antara lain :
Dapat menampilkan hasil konversi ke basis yang diinputkan user,
Dapat mengetahui kode ASCII tiap digit pada basis yang telah dikonversikan,
Dapat menjumlahkan semua digit kode ASCIIpada basis yang telah dikonversikan,
dan Dapat membalik string hasil konversi.

NB:

Untuk menjadikan program ini lebih efektif, basis dibatasi dari 0 sampai 62.
Untuk merepresentasikan bilangan diatas 9, kita dapat menggunakan karakter A-Z dilanjutkan dengan a-z.
Kita DILARANG keras menggunakan perulangan iteratif (for,while,atau do-while)!

PEMBAHASAN
Suapaya kita lebih “donk” dalam menyamakan pola berpikir kita, kita lebih baik menggunakan perulangan iteratif terlebih dahulu yang nanti akan kita konversikan ke perulangan rekursif.

Nah, untuk memahami bagaimana cara untuk menyelesaikan masalah di atas, alangkah baiknya jikalau kita membagi program ini menjadi sub-sub permasalahan, anatara lain:

– Konversi dari desimal (basis 10) ke basis n(n= inputan user (0<=n<=62))
– Mencari berapa jumlah digit hasil konversi
– Pengubahan nilai tiap digit int hasil konversi ke char dengan menggunakan pengkodean ASCII
– Penyimpanan tiap digit tersebut ke dalam array of char
– Print Out ASCII code tiap digit
– Penjumlahan ASCII code
– Pembalikan String

Untuk mengkonversikan bilangan desimal ke basis tertentu alangkah baiknya teman-teman mempelajari program pengkonversian desimal to basis tertentu, misal basis = 3;

Contoh : Ubahlah 25 basis 10 ke bilangan basis 3. Diket : b=3, input=25

1.  Pertama kita harus melakukan pencarian 3 pangkat n yang lebih kecil dan paling dekat dengan input.
perulangan akan berakhir jika nilai 3 pangkat integer dibagi input(n) >= 1. Pola perulangan iterasi adalah perkalian dengan basis berulang sampai pada batas i/n=1. Pada perulangan ini, kita juga dapat memanfaatkannya untuk mencari jumlah digit hasil konversi.

int digit=0;
for(int i=1;i/n<1;i++)
{i*=b;stlen++;}

2. Langkah berikutnya yaitu membuat array of char sebanyak digit buah.

char hasil[digit];

3. Setelah itu, lakukan proses pengkonversian tiap digitnya dengan menggunakan perulangan sebayak digit. Pada perulangan ini kita langsung bisa mengkonversi dari integer hasil konversi ke basis n ke array of char yang telah kita buat sebelumnya. Untuk mengkonvert ke type char, kita dapat menambahkan n(hasil konversi) dengan ASCII code karakter 0(Nol). Untuk mengkonvert dari bilangan yang lebih besar sama dengan 10 ke huruf, kita dapat menggunakan cara yang sama juga. Namun, kita harus melawati 7 karakter ASCII antara karakter ‘9’ dan ‘A’. Hasil tiap digit langsung dapat ditampilkan dengan menggunakan perulangan yang sama.

int c,w=1;
for(int k=stlen;k>0;k–)
{   for(int l=1;l<k;l++)w*=b;
c=n%w;
n/=w;
if((48+n>57 && 48+n<65)||(48+n>90 && 48+n<97))n+=7;else {}
digit[stlen-k]=’60’+n;n-=7;
n=c;w=1;
printf(“%c”,des[stlen-k]);}

4. Kemudian, kita menggunakan perulangan baru untuk menuliskan ASCII tidap karakter string hasil konversi. Pada perulangan ini kita juga dapat menjumlahkan ASCII semua karakter pada string hasil konversi.

for(int i=0;i<stlen;i++)
{printf(“ASCII-nya %c adalah %d\n”,digit[i],digit[i]);
t+=(int)des[i];}

5. Terakhir, kita dapat membalik nilai string tersebut dengan menggunakan fungsi di bawah ini :

void kebalikan(char *des,int stlen,int n)
{    n=stlen-1;
for(int i=n;i>=0;i–)
printf(“%c”,des[i]);
}

dan menyisipkan pemanggilan fungsi berikut pada main()nya :

kebalikan(des,stlen,n);

Sebenarnya, program di atas sudah selesai, namun belum memenuhi syarat “hanya menggunakan perulanagan rekursif”.. Untuk mengetahui bagaimana mengubah perulangan iteratif ke perulangan rekursif, lihat postinganku selanjutnya aja yah..

4 thoughts on “Pembahasan Soal Shift No 2 Modul 3 PPT

  1. thanks bgt ya friands

  2. Wah…! Ternyata belajar di Teknik Informatika itu njlimet ya…. Belajar yang tekun ya… ! Sukses.

  3. kak.. tolong kakak bahas soal yang buat program yang membalik string tapi tanpa menggunakan fungsi strrev donk

    • oke.. nie langsung aku coding di sini.. harap maklum kalo error cz belum aku compile.. pokoknya algonya kamu ngerti kan..

      main()
      {
      char in[50],hasil[50];
      gets(in);
      int panjangKata=0;
      for(;in[panjangKata];panjangKata++);

      for(int i=0;i<panjangKata;i++)
      hasil[panjangKata-i-1]=in[i];

      puts(hasil);
      }

Tinggalkan Jejak

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s