Format Tiga Angka

Bilangan biasanya ditulis dengan memberikan titik atau koma setiap 3 angka dari ujung kanan sesuai standar penulisan bilangan setiap negara. 

Untuk menambahkan titik atau koma, kalian perlu memisahkan setiap angka atau digitnya. Ada beberapa cara untuk memisahkan bilangan menjadi beberapa bagian. Cara pertama adalah dengan mengubahnya menjadi string sehingga bisa dipisah perkarakter. Cara kedua adalah dengan membaginya dengan kelipatan 10, misalnya 1000.

Cara 1

Untuk memberikan karakter pembatas setiap beberapa karakter, kalian bisa memecah string jadi setiap beberapa karakter. Tapi, itu tidak bisa dilakukan secara langsung pada angka. Kalian perlu mengubah angka menjadi string sebelum bisa menampilkannya per-digit.
#include <stdio.h>
#include <string.h>

void format_angka(int angka, char c){
    char stmp[20];
    int i, pj, awal;
	
    sprintf(stmp, "%d", angka);
    pj=strlen(stmp)-1;
    awal=2-(pj%3);
	
    for(i=0;i<pj;i++){
        awal++;
        putchar(stmp[i]);
        if(awal>2){
            putchar(c);
    	    awal=0;
    	}
    }
    putchar(stmp[i]);
}

int main(){
    int angka;
    printf("Angka : ");
    scanf("%d", &angka);
    format_angka(angka, '.');
}
Contoh :
Angka : 12345
12.345

Cara ini hanya bisa digunakan untuk bilangan bulat. Kalau kalian menggunakan pecahan, kalian harus memisahkan bagian pecahannya terlebih dahulu. 

Cara 2

Selain dengan mengubah angka menjadi string, kalian juga bisa menggunakan pembagian kelipatan seribu untuk memisahkan bilangan setiap 3 digit dari kanan. Setelah dipisahkan, kalian bisa menambahkan karakter pemisah; baik itu titik maupun koma.

#include <stdio.h>
#include <string.h>

void format_angka(int angka, char c){
int  n, tmp, jtitik, potongan;
    n=angka;
    tmp=1;
	
    while(n>=1000){
        n/=1000;
        jtitik++;
        tmp*=1000;
    }
	
    potongan=(angka/tmp)%1000;
    printf("%d", potongan);
    tmp/=1000;
	
    for(int i=0;i<jtitik;i++){
	potongan=(angka/tmp)%1000;
        putchar(c);
	    
        if(potongan < 10)printf("00");
        else if(potongan < 100)printf("0");
	    
        printf("%d", potongan);
    	
        tmp/=1000;
    }
}

int main(){
    int angka;
    printf("Angka : ");
    scanf("%d", &angka);
    format_angka(angka, '.');
}