[C/C++] Chuyển đổi từ số la mã sang số thập phân

Thảo luận trong 'Visual C++' bắt đầu bởi Trần Văn Cường, 16/6/16.

  1. Trần Văn Cường

    Trần Văn Cường I love CNTT Thành viên BQT Thành viên BQT

    Tham gia ngày:
    8/11/15
    Bài viết:
    3,693
    Đã được thích:
    43
    Điểm thành tích:
    48
    Giới tính:
    Nam
    Nghề nghiệp:
    Sinh Viên
    Nơi ở:
    Quảng Ninh thân yêu!
    Web:

    Bảng số la mã và một số quy tắc chuyển đổi.
    1. Bảng số la mã

    I V X L C D M
    1 5 10 50 100 500 1000


    2. Quy tắc chuyển đổi

    a/ Số thập phân được cấu thành từ các chữ số đơn lẻ. Ví dụ: 1989 được ghép bởi 1,9,0,8. Còn đối với cách biểu diễn chữ số la mã thì mỗi chữ số khác 0 ở mỗi hàng ( hàng đơn vị, hàng chục, hàng trăm,…) sẽ được biểu diễn bởi 1 kí tự số la mã. 1000 = M, 900 = CM, 0 không được biểu diễn, 8 = VIII. 1908 = MCMVIII

    b/ “I”, “X”, “C”, “M” có thể được xuất hiện liên tiếp (cạnh nhau) tối đa 3 lần. Tuy nhiên, các kí tự này có thể xuất hiện nhiều hơn. (Ví dụ: XXXIX). Các kí tự “D”, “L”, “V” không được phép lặp lại.

    c/
    Chữ số đi sau chữ số khác lớn hơn hoặc bằng thì cộng thêm vào:
    VI = V + I = 5 + 1 = 6
    LX = L + X = 50 + 10 = 60
    XX = X + X = 10 + 10 = 20

    Chữ số đi trước chữ số khác lớn hơn thì trừ bớt đi:
    IV = V – I = 5 – 1
    XL = L – X = 50 – 10 = 40

    “I” chỉ có thể bị trừ bởi “V”, “X”. ( IV = V – I = 5 – 1 = 4, IX = X – I = 10 – 1 = 9)
    “X” chỉ có thể bị trừ bởi “C”, “L”. ( XC = 100 – 10 = 90, XL = 50 – 10 = 40)
    “C” chỉ có thể bị trừ bởi “D” và “M”. (CD = 500 – 100 = 400, CM = 1000)
    “V”, “L”, “D” không bao giờ bị trừ.

    d/ Nếu thêm 1 dấu gạch ngang trên đầu thì giá trị của nó bằng giá trị hiện tại nhân với 1000

    c-c-chuyen-doi-tu-so-la-ma-sang-so-thap-phan.gif

    CODE:
    Select All
    #include<stdio.h>
    #include<string.h>
    #include "stdlib.h"
    #include<conio.h>
    void main()
    {
        
    int a[20], len0jk;
        
    char roman[20];
        
    printf("Nhap day chu so La Ma(Note: chi su dung I,V,X,L,C,D,M): ");
        
    gets(roman);
        
    len strlen(roman);
        for(
    0leni++)
        {
            if(
    roman[i] == 'I')
                
    a[i] = 1;
            else if(
    roman[i] == 'V')
                
    a[i] = 5;
            else if(
    roman[i] == 'X')
                
    a[i] = 10;
            else if(
    roman[i] == 'L')
                
    a[i] = 50;
            else if(
    roman[i] == 'C')
                
    a[i] = 100;
            else if(
    roman[i] == 'D')
                
    a[i] = 500;
            else if(
    roman[i] == 'M')
                
    a[i] = 1000;
            else
            {
                
    printf("\nXin nhap lai day so la ma");
                
    getch();
                exit(
    1);
             }
        }
        
    a[len-1];
        for(
    len-10i--)
        {
            if(
    a[i] > a[i-1])
                
    a[i-1];
            else if(
    a[i] == a[i-1] || a[i] < a[i-1])
                
    a[i-1];
        }
        
    printf("\nGia tri thap phan tuong ung la: %d "k);
        
    getch();
    }
     

    Bình Luận Bằng Facebook

    data-href="https://cnttqn.com/threads/c-c-chuyen-doi-tu-so-la-ma-sang-so-thap-phan.2176.html"