struct rmap { char *r; int v; } units[] = { {"M", 1000}, {"CM", 900}, {"D", 500}, {"CD", 400}, {"C", 100}, {"XC", 90}, {"L", 50}, {"XL", 40}, {"X", 10}, {"IX", 9}, {"V", 5}, {"IV", 4}, {"I", 1}}; #include char result[64]; char *intToRoman(int num) { result[0] = 0; int ri = 0; int i = 0; while (num) { if (num >= units[i].v) { strcat(result, units[i].r); num -= units[i].v; } else { i++; } } return result; }