Saturday, 5 October 2013

C Program to Convert Numbers to Roman Numerals solved

#include<stdio.h>

#define p printf
main()
{
    int grade,C,L,X,V,I,H=0;


    printf("\n\nMy Grade is ");
    scanf("%d",&grade);

    C=grade/100;
    L=grade%100/50;
    X=grade%100%50/10;
    V=grade%100%50%10/5;
    I=grade%100%50%10%5/1;

        if(grade>100){
                p("Invalid Input");

                return 0;
        }

    if(C==1){
        p("C");
    }

    if((L==1) && (X==4)){
        p("XC");
    }

    if((L==1) && (X!=4)){
        p("L");
    }

    if((L==0) && (X==4)){
        p("XL");
    }

    if(X==1){
        p("X");
    }

    if(X==2){
        p("XX");
    }

    if(X==3){
        p("XXX");
    }

    if((V==1) &(I!=4)){
        p("V");
    }

    if(I==1){
        p("I");
    }

    if(I==2){
        p("II");
    }

    if(I==3){
        p("III");
    }

    if((I==4) && (V%2==1)){
        p("IX");
    }

    if((I==4) && (V%2==0)){
        p("IV");
    }


    return 0;
}

C Program to Convert Numbers to Roman Numerals

  1. /*
  2.  * C Program to Convert Numbers to Roman Numerals
  3.  */
  4. #include <stdio.h>
  5.  
  6. void predigit(char num1, char num2);
  7. void postdigit(char c, int n);
  8.  
  9. char romanval[1000];
  10. int i = 0;
  11. int main()
  12. {
  13.     int j;
  14.     long number;
  15.  
  16.     printf("Enter the number: ");
  17.     scanf("%d", &number);
  18.     if (number <= 0)
  19.     {
  20.         printf("Invalid number");
  21.         return 0;
  22.     }
  23.     while (number != 0)
  24.     {
  25.         if (number >= 1000)
  26.         {
  27.             postdigit('M', number / 1000);
  28.             number = number - (number / 1000) * 1000;
  29.         }
  30.         else if (number >= 500)
  31.         {
  32.             if (number < (500 + 4 * 100))
  33.             {
  34.                 postdigit('D', number / 500);
  35.                 number = number - (number / 500) * 500;
  36.             }
  37.             else
  38.             {
  39.                 predigit('C','M');
  40.                 number = number - (1000-100);
  41.             }
  42.         }
  43.         else if (number >= 100)
  44.         {
  45.             if (number < (100 + 3 * 100)) 
  46.             {
  47.                 postdigit('C', number / 100);
  48.                 number = number - (number / 100) * 100;
  49.             }
  50.             else
  51.             {
  52.                 predigit('L', 'D');
  53.                 number = number - (500 - 100);
  54.             }
  55.         }
  56.         else if (number >= 50 )
  57.         {
  58.             if (number < (50 + 4 * 10))
  59.             {
  60.                 postdigit('L', number / 50);
  61.                 number = number - (number / 50) * 50;
  62.             }
  63.             else
  64.             {
  65.                 predigit('X','C');
  66.                 number = number - (100-10);
  67.             }
  68.         }
  69.         else if (number >= 10)
  70.         {
  71.             if (number < (10 + 3 * 10))
  72.             {
  73.                 postdigit('X', number / 10);
  74.                 number = number - (number / 10) * 10;
  75.             }
  76.             else
  77.             {
  78.                 predigit('X','L');
  79.                 number = number - (50 - 10);
  80.             }
  81.         }
  82.         else if (number >= 5)
  83.         {
  84.             if (number < (5 + 4 * 1))
  85.             {
  86.                 postdigit('V', number / 5);
  87.                 number = number - (number / 5) * 5;
  88.             }
  89.             else
  90.             {
  91.                 predigit('I', 'X');
  92.                 number = number - (10 - 1);
  93.             }
  94.         }
  95.         else if (number >= 1)
  96.         {
  97.             if (number < 4)
  98.             {
  99.                 postdigit('I', number / 1);
  100.                 number = number - (number / 1) * 1;
  101.             }
  102.             else
  103.             {
  104.                 predigit('I', 'V');
  105.                 number = number - (5 - 1);
  106.             }
  107.         }
  108.     }
  109.     printf("Roman number is: ");
  110.     for(j = 0; j < i; j++)
  111.         printf("%c", romanval[j]);
  112.     return 0;
  113. }
  114.  
  115. void predigit(char num1, char num2)
  116. {
  117.     romanval[i++] = num1;
  118.     romanval[i++] = num2;
  119. }
  120.  
  121. void postdigit(char c, int n)
  122. {
  123.     int j;
  124.     for (j = 0; j < n; j++)
  125.         romanval[i++] = c;
  126. }