Chuyển đổi một số nguyên thành dạng số La Mã trong C
Trong lịch sử, hệ thống số La Mã đã được sử dụng rộng rãi trước khi hệ thống số hiện đại được phát triển. Trong bài tập này, mình sẽ viết một chương trình trong ngôn ngữ C để chuyển đổi một số nguyên thành dạng số La Mã.
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
Chương trình trong ngôn ngữ C để chuyển đổi một số nguyên thành dạng số La Mã
Cách giải quyết:
Để chuyển đổi một số nguyên thành dạng số La Mã, chúng ta cần thực hiện các bước sau:
- Xác định các ký tự tương ứng với các giá trị của số La Mã.
- Lặp qua các giá trị của số và thêm các ký tự tương ứng vào chuỗi số La Mã.
- Trừ đi giá trị của số và lặp lại cho đến khi số bằng 0.
Hãy xem cách giải bài lập trình sau:
Bài viết này được đăng tại [free tuts .net]
File: decimal_to_roman.c
#include <stdio.h> // Hàm chuyển đổi số nguyên thành số La Mã void convertToRoman(int num) { int decimalValues[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; char *romanSymbols[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; // Chuyển đổi số nguyên thành số La Mã for (int i = 0; num > 0; i++) { while (num >= decimalValues[i]) { printf("%s", romanSymbols[i]); num -= decimalValues[i]; } } } int main() { int number; printf("freetuts.net"); printf("Nhap vao mot so nguyen: "); scanf("%d", &number); printf("So La Ma tuong ung la: "); convertToRoman(number); printf("\n"); return 0; }
Kết quả:
Nhap vao mot so nguyen: 3549 So La Ma tuong ung la: MMMDXLIX
Giải thích :
- Trong code trên, mình đã sử dụng hai mảng
decimalValues
vàromanSymbols
để lưu trữ giá trị và ký tự tương ứng của số La Mã. - Hàm
convertToRoman
lặp qua các giá trị của mảngdecimalValues
và thêm các ký tự tương ứng vào chuỗi số La Mã. - Kết quả cuối cùng là số La Mã tương ứng với số nguyên nhập vào.
Việc này giúp mình chuyển đổi một số nguyên thành dạng số La Mã một cách hiệu quả trong ngôn ngữ lập trình C.