Canna

Sunday, 23 September 2018

Roman tour

Problem Description

Rafiq trying to convert roman to numbers. He asks maths teacher to know about the conversion. His maths teacher explained the conversion of roman to numbers. Then Rafiq understands the conversion concepts, by using that he write a C program to do conversion.

Valid digits are I, V, X, L, C, D, M

  • Test Case 1

    Input (stdin)
    X
    
    
    Expected Output
    10
  • Test Case 2

    Input (stdin)
    XIV
    
    
    Expected Output
    14
  • Progam
  •  
    #include<stdio.h>
    #include<string.h>
     
    int digit(char);
     
    int main(){
     
        char roman_Number[1000];
        int i=0;
        long int number =0;
     
       
        scanf("%s",roman_Number);
     
        while(roman_Number[i]){
     
             if(digit(roman_Number[i]) < 0){
                 printf("Invalid roman digit : %c",roman_Number[i]);
                 return 0;
             }
     
             if((strlen(roman_Number) -i) > 2){
                 if(digit(roman_Number[i]) < digit(roman_Number[i+2])){
                     printf("Invalid roman number");
                     return 0;
                 }
             }
     
             if(digit(roman_Number[i]) >= digit(roman_Number[i+1]))
                 number = number + digit(roman_Number[i]);
             else{
                 number = number + (digit(roman_Number[i+1]) - digit(roman_Number[i]));
                 i++;
             }
             i++;
        }
     
        printf("%ld",number);
     
        return 0;
     
    }
     
    int digit(char c){
     
        int value=0;
     
        switch(c){
             case 'I': value = 1; break;
             case 'V': value = 5; break;
             case 'X': value = 10; break;
             case 'L': value = 50; break;
             case 'C': value = 100; break;
             case 'D': value = 500; break;
             case 'M': value = 1000; break;
             case '\0': value = 0; break;
             default: value = -1; 
        }
     
        return value;
    }

No comments:

Post a Comment

Note: only a member of this blog may post a comment.