Giúp rút gọn bài cách đọc số

Em có viết chương trình cách đọc tên 1 số dương <1000, nhưng khi đọc thì nó lại lặp 3 lần cái switch, vậy mong mọi người giúp em rút ngắn lại ạ, em thấy nó k được hay , mong mọi người giúp đỡ.

#include <iostream>
using namespace std;
int main (){
	int n;
	do{
		cout<<"Moi nhap 0<n<1000: ";
		cin>>n;
	}while (n<=0||n>=1000);
	int cs1,cs2,cs3;
	cs3=n%10;
	n/=10;
	cs2=n%10;
	n/=10;
	cs1=n;
	if(cs1!=0){
		switch (cs1){
			case 1:{
				cout<<"mot";
				break;
			}
			case 2:{
				cout<<"hai";
				break;
			}
			case 3:{
				cout<<"ba";
				break;
			}
			case 4:{
				cout<<"bon";
				break;
			}
			case 5:{
				cout<<"nam";
				break;
			}
			case 6:{
				cout<<"sau";
				break;
			}
			case 7:{
				cout<<"bay";
				break;
			}
			case 8:{
				cout<<"tam";
				break;
			}
			case 9:{
				cout<<"chin";
				break;
			}
		}
		cout<<" tram";
	}
	if(cs2!=0){
	    switch (cs2){
			case 1:{
				cout<<"mot";
				break;
			}
			case 2:{
				cout<<"hai";
				break;
			}
			case 3:{
				cout<<"ba";
				break;
			}
			case 4:{
				cout<<"bon";
				break;
			}
			case 5:{
				cout<<"nam";
				break;
			}
			case 6:{
				cout<<"sau";
				break;
			}
			case 7:{
				cout<<"bay";
				break;
			}
			case 8:{
				cout<<"tam";
				break;
			}
			case 9:{
				cout<<"chin";
				break;
			}
		}
		cout<<" muoi ";
	}
	switch (cs3){
			case 1:{
				cout<<"mot";
				break;
			}
			case 2:{
				cout<<"hai";
				break;
			}
			case 3:{
				cout<<"ba";
				break;
			}
			case 4:{
				cout<<"bon";
				break;
			}
			case 5:{
				cout<<"nam";
				break;
			}
			case 6:{
				cout<<"sau";
				break;
			}
			case 7:{
				cout<<"bay";
				break;
			}
			case 8:{
				cout<<"tam";
				break;
			}
			case 9:{
				cout<<"chin";
				break;
			}
		}
	return 0;
}

Cái gì giống nhau thì gộp làm 1. Và nếu có quy luật lặp đi lặp lại thì dùng vòng lặp.

5 Likes

Theo mình, giải pháp là sử dụng hàm.
Nhưng bạn cần xem lại code đã.
Nhập 109 = > mot tram chin
203 = > hai tram ba

2 Likes

Dùng mảng cho chỗ 0…9 nữa :slight_smile:

Chú ý rằng chữ số 0 riêng lẻ tùy vị trí có 3 cách đọc, mà còn a00 nữa.

4 Likes

cảm ơn bạn nhiều nha

thanks bác rất nhiều

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?