Konversi Angka Romawi di Bahasa C
Kuliah membuat saya mau tidak mau harus berhadapan dengan bahasa pemgrograman dasar (DASPRO/Dasar Pemrograman) yaitu Bahasa C. Meski hampir setiap bahasa pemrograman memiliki algoritma yang hampir sama, hanya saja penulisanya berbeda-beda.
Kali ini saya akan mencoba berbagi salah koding yang telah dibuat. Sebenarnya ini adalah bagian dari tugas kuliah DasPro. Semoga para pembaca dapat menerima dan memahami apa yang saya tulis nantinya.
Oke Langsung saja di simak kodingnya gan.
#include <stdlib.h>
#include <stdio.h>
/*
* Boleh disebar tapi jangan dibajak
* Angka romawi berjalan normal hanyadi angka 3999 (mentok)
* karena C tidak memuliki nilai null, maka var int n diberi unsigned
* unsuccessfully.
* Char *s gunanya untuk memberikan nilai input dan ouput
*/
void roman(char *s, unsigned int n)
{
if (n == 0)
{
fputs(stderr, 'Romawi tidak bernilai nol.');
exit(EXIT_FAILURE);
}
/* Baris hijau dibawah jangan dihapus, itu bukan komentar
* Itu adalah baris untuk mendifinisakan digits dan digit sebelum digunakan
* atau kata lainya memberikan nilai awal
*/
#define digit(loop, num, c)
loop (n >= num)
{*(s++) = c;
n -= num;}
#define digits(loop, num, c1, c2)
loop (n >= num)
{*(s++) = c1;
*(s++) = c2;
n -= num;}
digit ( while, 1000, 'M' )
digits ( if, 900, 'C', 'M' )
digit ( if, 500, 'D' )
digits ( if, 400, 'C', 'D' )
digit ( while, 100, 'C' )
digits ( if, 90, 'X', 'C' )
digit ( if, 50, 'L' )
digits ( if, 40, 'X', 'L' )
digit ( while, 10, 'X' )
digits ( if, 9, 'I', 'X' )
digit ( if, 5, 'V' )
digits ( if, 4, 'I', 'V' )
digit ( while, 1, 'I' )
#undef digit
#undef digits
*s = 0;}
int main()
{
char buffer[16];
unsigned int i;
int x,y;
printf('Masukan angka romawi : '); scanf('%d',&i);
roman(buffer, i);
printf('%4u: %s ', i, buffer);
/* Kalo mau coba looping pake yang bawah */
printf('Masukan angka awal : '); scanf('%d',&x);
printf('sampai angka : '); scanf('%d',&y);
if(y<x)
printf('Angka tidak memenuhi syarat');
else
for (i = x ; i < y ; ++i)
{
roman(buffer, i);
printf('%4u: %s ', i, buffer);
}
return 0;
}
Kode program diatas bisa langsung di copy dan dijalankan di compiler C, seperti Borland, CodeBlock dan lainya.


