Program C : Membuat Nomor ID atau Kode Barang

Algoritma dalam membuat nomor ID atau kode tidak sama dengan membuat urutan-urutan bilangan biasa. Jika kita hanya ingin menampilkan bilangan  dari 1-100, kita hanya perlu mencetak angka-angka yg berubah pada for (biasanya i++). Namun pada nomor id atau kode, terdapat angka 0 dibelakang bilangannya sesuai dengan maksimal digit yang ditentukan user. berikut contoh dari input dan output program nya :

id/kode dengan maksimal 7 digit angka

Source Code :

#include <stdio.h>

int main(){
int i,j,k=1,max_digit,jumlah_id,nol[50],status=0,cek;
char digit[10];
printf("masukan maksimal digit : ");
scanf("%ld",&max_digit);
printf("masukan jumlah id/kode : ");
scanf("%d",&jumlah_id);
cek=jumlah_id;
for (i=1;i<=max_digit;i++){
cek/=10; 
}
if(cek>0) printf("Error! jumlah digit pada id/kode melewati batas max digit");
else {
for(i=1;i<=max_digit;i++){
nol[i]=0;
}
for(i=1;i<=jumlah_id;i++){
for(j=1;j<=max_digit;j++){
if(i==k){ 
max_digit--; 
k*=10;
}
if(max_digit!=0) printf("%d",nol[j]);
}
printf("%d ",i);
}
}
return 0;
}

Beberapa hal penting yang perlu diperhatikan adalah :

1. Digit pada jumlah angka yang diinputkan tidak boleh melebihi maksimal digit. Jadi kita harus memberikan validasi if/jika digit pada jumlah angkanya melebihi maksimal digit.
Untuk mengecek apakah digit pada jumlah angkanya tidak melewati maksimal digitnya, saya menggunakan variabel "cek". Jika digit pada jumlah angka melewati maksimal digit, maka akan menampilkan tulisan "Error".
2. Angka 0 dibelakang bilangan-bilangan tersebut akan berkurang saat bilangan bertambah jumlah digitnya. jika tidak, maka jumlah digit pada bilangan akan melewati batas maksimal digitnya.
Contoh :
Misal max digit adalah 3. Jika angka 0 dibelakang bilangan tidak dikurangi, maka nomor id setelah 009 akan menjadi 0010(melewati max digit[3]). Seharusnya, nomor id setelah 009 adalah 010, hal itu dapat dilakukan dengan mengurangi angka 0 dibelakang bilangan 10.
Untuk mengurangi angka 0 di belakang bilangan, maksimal digit(max_digit) dikurangi sebanyak 1 (max_digit--) yang dilakukan setiap jumlah bilangannya adalah kelipatan 10 yaitu 10,100,1000,dst (k*=10) karena sebuah bilangan pertama kali bertambah digitnya saat mencapai angka dengan kelipatan 10.

Sekian artikel kali ini, semoga bermanfaat.


2 komentar:

Copyright © 2013 Yanamon