Làm kiểu em không ổn đâu để anh hướng dẫn thuật toán nhé. Lâu rồi anh không dùng đến C++ nhiều lắm nên bây giờ quên rồi. Nếu như em học tốt thuật toán dùng nó khá dễ dàng.
Vấn đề 1: Chuyển số thành là mã.
-Kiểm tra chuỗi nhập vào có phải là số không. Thứ hai chuyển chuỗi string thành dạng number.
hàm kiểm tra:
boolean isNumber=true;
for(int i=0; i<input.length();i++){
if(input[i]<48||input[i]>57){
isNumber=false;
}
}
Hàm chuyển string thành integer và kiểm tra xem nó có lớn hơn 3000 không? (chắc chắn là em làm được)
- Chuyển chuỗi String thành chữ số la mã.
String Lama[]=[“”, “I”, “II”, “III”, “IV”, “V”, “VI”, “VII”, “VIII”, “IX”, “X”, “XX”, “XXX”, “XL”, “L”, “LX”, “LXX”, “LXXX”,”XC”, “C”, “CC”, “CCC”, “CD”, “D”, “DC”, “DCC”, “DCCC”, “CM”, “M”, “MM”, “MMM”]
for(int i=0; i<input.length(); i++){
if(input[i]==’I’||input[i]==’V’||input[i]=’X’...){
kiểm tra trong chuỗi string không có ký tự lạ ngoài chữ số la mã
}
else{
kiểm tra thấy tồn tại chữ ngoài chữ số la mã;
}
}
int num=0;
while(input==””){
for(int i=input.length()-1; i>=0; i--)
{
string save=input.substr(0,i);
for(int j=0; j< Lama.count();j++){
if(save.equal(Lama[i])){
num=num+number[j];
input=input substr(i+1, input.length()-(i+1));
}
}
}
}
boolean isLama=true;
string toLama= num -> la mã (thực thi chuyển đổi number sang số la mã)
if(toLama.equal(input)){
số la mã nhập vào là đúng in ra num;
}
else{
số la mã nhập sai báo lại cho người dùng là đã nhập sai số la mã. Số la mã này không tồn tại
}