[Array] Menghitung Kemunculan Angka yang Sama


Soal

Buatlah program dalam Bahasa C yang membaca sejumlah bilangan integer 0 atau positif yang terdiri atas 1 s.d. 5 digit (diasumsikan masukan selalu benar). Asumsikan pula, banyaknya bilangan tidak lebih dari 100 buah.

Pembacaan bilangan dihentikan ketika pengguna mengetikkan sebuah bilangan negatif atau jika banyaknya bilangan sudah sama dengan 100.

Program kemudian menuliskan ke layar banyaknya bilangan yang dimasukkan dan setiap digit yang ada dalam semua bilangan yang diketikkan dan menuliskan jumlah kemunculannya. (lihat contoh, perhatikan spasi yang digunakan). Hanya digit yang ada saja yang ditulis dan harus ditulis terurut menaik.

contoh input output soal 3
contoh 2 input output soal 3
contoh 3 input output soal 3

Skenario yang harus diperhatikan

1. Perhatikan digit yang diinput, jika kurang dari 0 atau sudah input 100 kali (hitung jumlah input), hentikan program
2. Input dapat terdiri dari beberapa digit (bilangan integer positif hingga 5 digit, ex 12345).
3. Buat array untuk output masing masing digit sesuai dengan digit yang di input.
4. Lakukan pengecekan mulai dari pemeriksaan elemen pertama, jika 0, maka masukkan ke penambahan output array 0.
5. Selanjutnya, lakukan pengecekan input digit yang lebih dari 0. Jumlahkan. Periksa digit belakang/akhir terlebih dahulu. gunakan X%10. Sisa proses div dimasukkan ke output array yang sesuai. Jika sisa 1, masukkan ke output array 1, jika 2 masukkan ke output array 2. dan seterusnya. hitung jumlah setiap sisa yang masuk ke output masing masing array.
6. Ulangi pengecekan untuk digit kekiri dengan looping.
7. Selanjutnya, pengecekan dilakuka untuk digit depan/pertama dengan fungsi bagi, yaitu x/10. tam
8. Tampilkan jumlah output array yang lebih dari 0 secara terurut menaik.

Jawaban

#include<stdio.h>
#include<stdlib.h>

int main (){

_______int X,i,sisa;
_______int T[10];
_______int jum=0;
//inisialisasi X bilangan input, i untuk iterasi, sisa untuk digit yang belum diproses
//T set array statis 10
//jum untuk jumlah digit

//set array untuk output
_______for (i=0;i<10;i++){

_______T[i]=0;
}

//baca bilangan bilangan integer
_______scanf(“%d”, &X);

//baca angka depan bilangan
_______sisa=X%10;

//jika angka depan negatif
_______if(X<0){
______________printf (“0\n”);
}
//jika angka depan lebih dari atau sama dengan nol
//dan jumlah masukan tidak lebih dari 100, proses

_______else {
______________while ((X>=0) && (jum<100)) {
______________if (X==0){
______________T[0]++;
______________jum++;
}

//jika angka depan atau angka belakang tidak sama dengan 0
_______else {
______________while ((X/10!=0)||(X%10!=0)) {

//cek angka belakang terlebih dahulu
_______sisa = X%10;

//jika sisa adalah 0, berarti output nilai 0 bertambah satu
_______if (sisa==0){
______________T[0]++;
}

//jika sisa adalah 1, berarti output nilai 1 bertambah satu
_______else if (sisa==1){
______________T[1]++;
}
//dst
_______else if (sisa==2){
______________T[2]++;
}
_______else if (sisa==3){
______________T[3]++;
}
_______else if (sisa==4){
______________T[4]++;
}
_______else if (sisa==5){
______________T[5]++;
}
_______else if (sisa==6){
______________T[6]++;
}
_______else if (sisa==7){
______________T[7]++;
}
_______else if (sisa==8){
______________T[8]++;
}
_______else if (sisa==9){
______________T[9]++;
}

//cek angka depan
_______X=X/10;
__}
_______jum++;
__}
//baca ulangan seluruh input
_______scanf(“%d”, &X);
__}
}

//cetak jika ketemu
_______if (jum!=0) {
______________printf(“%d\n”,jum);
}

//cetak output yang ada nilainya secara terurut
_______for (i=0;i<10;i++){
______________if (T[i]>0) {
______________printf(“%d : %d\n”,i,T[i]);
_______}
}
_______return 0;
}

Hasilnya

Test Case 1 –> dengan input nilai negatif -99 (nilai minus=program berhenti)

soal1_TC2

Test Case 2 –> dengan input positif sampai 3 digit tidak sampai 100 kali (100 kali input=program berhenti)

soal1_TC1

Test Case 3 –> dengan input positif sampai 5 digit tidak sampai 100 kali (100 kali input=program berhenti)

soal1_TC3

Note: Contoh soal berasal dari Oddyseus ITB

 


		

8 thoughts on “[Array] Menghitung Kemunculan Angka yang Sama

Leave a Reply

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