Skip to content

Instantly share code, notes, and snippets.

@amyreese
Created March 24, 2014 00:58
Show Gist options
  • Save amyreese/9732411 to your computer and use it in GitHub Desktop.
Save amyreese/9732411 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdlib.h>
void numeral(int num, char buffer[])
{
int ones = num % 10;
int tens = num / 10;
int i = 0;
switch (tens)
{
case 1:
buffer[i++] = 'X';
break;
case 2:
buffer[i++] = 'X';
buffer[i++] = 'X';
break;
case 3:
buffer[i++] = 'X';
buffer[i++] = 'X';
buffer[i++] = 'X';
break;
case 4:
buffer[i++] = 'X';
buffer[i++] = 'L';
break;
case 5:
buffer[i++] = 'L';
break;
}
switch (ones)
{
case 1:
buffer[i++] = 'I';
break;
case 2:
buffer[i++] = 'I';
buffer[i++] = 'I';
break;
case 3:
buffer[i++] = 'I';
buffer[i++] = 'I';
buffer[i++] = 'I';
break;
case 4:
buffer[i++] = 'I';
buffer[i++] = 'V';
break;
case 5:
buffer[i++] = 'V';
break;
case 6:
buffer[i++] = 'V';
buffer[i++] = 'I';
break;
case 7:
buffer[i++] = 'V';
buffer[i++] = 'I';
buffer[i++] = 'I';
break;
case 8:
buffer[i++] = 'V';
buffer[i++] = 'I';
buffer[i++] = 'I';
buffer[i++] = 'I';
break;
case 9:
buffer[i++] = 'I';
buffer[i++] = 'X';
break;
}
buffer[i] = 0;
}
int main(int argc, char* argv[])
{
char buffer[50];
for (int i = 1; i <= 25; i++)
{
numeral(i, buffer);
printf("%2d = %-10s ", i, buffer);
numeral(i + 25, buffer);
printf("%2d = %-10s\n", i + 25, buffer);
}
}
jreese@garrus /tmp/roman » g++ -o roman roman.cpp && ./roman
1 = I 26 = XXVI
2 = II 27 = XXVII
3 = III 28 = XXVIII
4 = IV 29 = XXIX
5 = V 30 = XXX
6 = VI 31 = XXXI
7 = VII 32 = XXXII
8 = VIII 33 = XXXIII
9 = IX 34 = XXXIV
10 = X 35 = XXXV
11 = XI 36 = XXXVI
12 = XII 37 = XXXVII
13 = XIII 38 = XXXVIII
14 = XIV 39 = XXXIX
15 = XV 40 = XL
16 = XVI 41 = XLI
17 = XVII 42 = XLII
18 = XVIII 43 = XLIII
19 = XIX 44 = XLIV
20 = XX 45 = XLV
21 = XXI 46 = XLVI
22 = XXII 47 = XLVII
23 = XXIII 48 = XLVIII
24 = XXIV 49 = XLIX
25 = XXV 50 = L
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment