vozForums
Báo lỗi diễn đàn và theo dõi tình hình khắc phục.

Go Back   vozForums > Máy tính để bàn > Phần mềm > Phát triển Phần mềm


Reply
 
Thread Tools
  #1  
Old 12-06-2010, 13:05
tokochan's Avatar
tokochan tokochan is offline
Senior Member
 
Join Date: 08-2009
Location: Hà Nội City
Posts: 860
Send a message via Yahoo to tokochan Send a message via Skype™ to tokochan
Nhờ các bác biết lập trình hướng dẫn em ạ

thầy vừa cho cái đề mà nghĩ mãi chưa ra, bác nào giỏi lập trình hướng dẫn em với (trình C ạ) :

Hay nhap vao mot so nguyen duong co 4 chu so (co kiem tra tinh hop le cua so vua nhap >=1000 va <=9999 va thong bao trong truong hop nhap sai). Sau do hien thi ra man hinh gia tri bang chu cua so vua nhap.



VD: So nhap vao la 1234 , hien thi ra man hinh la Mot nghin hai tram ba muoi tu

1034 hien thi ra man hinh la Mot nghin khong tram ba muoi tu

1000 hien thi ra man hinh la Mot nghin

mong các bác giúp đỡ ạ
Reply With Quote
  #2  
Old 12-06-2010, 13:10
uzi uzi is offline
K.I.A
 
Join Date: 01-2010
Posts: 138
Send a message via Yahoo to uzi Send a message via Skype™ to uzi
Re: Nhờ các bác biết lập trình hướng dẫn em ạ

chắc chia cho 1k => chữ số hàng nghìn
chia cho 100 => cs hàng trăm
....
(chưa học, chém bậy thế)
Reply With Quote
  #3  
Old 12-06-2010, 13:10
ducthanh91's Avatar
ducthanh91 ducthanh91 is offline
Senior Member
 
Join Date: 05-2010
Posts: 116
Re: Nhờ các bác biết lập trình hướng dẫn em ạ

Code:
#include <iostream.h>
long mu(int a,int b)
{
	int kq=1;
	for (int i=0;i<b;i++)
	{
		kq*=a;
	}
	return kq;
}
void sosangchu(int a)
{	
		char* chuso[10]={"khong ","mot ","hai ","ba ","bon ","nam ","sau ","bay ","tam ","chin "};
		cout << chuso[a];
}
void docso(int n)
{
	int stn[3];
	int dsdem[100];
	int mt=11,sd[12]={0},i,dk=0;
	while (n>0)
	{
		sd[mt]=n%10;
		n/=10;
		mt--;
	}
	for (i=0;i<12;i+=3)
	{
	stn[0]=sd[i];stn[1]=sd[i+1];stn[2]=sd[i+2];
	if(dk==1){if(stn[1]!=0||stn[2]!=0){sosangchu(stn[0]);cout<<"tram ";}}
	if(dk!=1){if(stn[0]!=0){sosangchu(stn[0]);cout<<"tram ";}}
	if(stn[1]>1){sosangchu(stn[1]);cout<<"muoi ";}
	if(stn[1]==1){cout<<"muoi ";}
	if(dk!=1){if(stn[0]!=0&&stn[1]==0&&stn[2]!=0){cout<< "le ";}}
	if(dk==1){if(stn[2]!=0){cout <<"le ";}}
	if(stn[2]!=0){sosangchu(stn[2]);}
	if (stn[0]!=0||stn[1]!=0||stn[2]!=0)
	{
		
		if (i==0){cout << "ti ";dk=1;}
		if (i==3){cout << "trieu ";dk=1;}
		if (i==6){cout << "nghin ";dk=1;}
		
	}
	}
	cout << "\n";
}
void main()
{
	int n;
	cout << "Nhap n: ";
	cin >> n;
	cout <<"gia tri n co the co : "<<n<<"\n";
	docso(n);
}
-> Đọc được tới 999 tỷ
Reply With Quote
  #4  
Old 12-06-2010, 13:20
lostninja lostninja is offline
K.I.A
 
Join Date: 11-2008
Posts: 29
Re: Nhờ các bác biết lập trình hướng dẫn em ạ

Quote:
Originally Posted by tokochan View Post
thầy vừa cho cái đề mà nghĩ mãi chưa ra, bác nào giỏi lập trình hướng dẫn em với (trình C ạ) :

Hay nhap vao mot so nguyen duong co 4 chu so (co kiem tra tinh hop le cua so vua nhap >=1000 va <=9999 va thong bao trong truong hop nhap sai). Sau do hien thi ra man hinh gia tri bang chu cua so vua nhap.



VD: So nhap vao la 1234 , hien thi ra man hinh la Mot nghin hai tram ba muoi tu

1034 hien thi ra man hinh la Mot nghin khong tram ba muoi tu

1000 hien thi ra man hinh la Mot nghin

mong các bác giúp đỡ ạ

cho 1 vòng lập
do
{
....
}

while ( >=1000 va <=9999 ) ; // để kiểm tra tính hợp lệ

nếu hợp lệ thì quất 4 cái swith

switch1 :
case 1 : if ( n : 1000 ) = 1
printf( "Một nghìn " ); break ; // rồi lấy n % 1000 ra số có 3 chữ số
case 2 : // tương tự

switch2 : // n : 100
switch3 : // n : 10
switch4 : // n :


nói chung là cú pháp tự làm đi cho quen , nói vậy đủ rồi

Last edited by lostninja; 12-06-2010 at 13:22.
Reply With Quote
  #5  
Old 12-06-2010, 13:55
tokochan's Avatar
tokochan tokochan is offline
Senior Member
 
Join Date: 08-2009
Location: Hà Nội City
Posts: 860
Send a message via Yahoo to tokochan Send a message via Skype™ to tokochan
Re: Nhờ các bác biết lập trình hướng dẫn em ạ

Quote:
Originally Posted by lostninja View Post
cho 1 vòng lập
do
{
....
}

while ( >=1000 va <=9999 ) ; // để kiểm tra tính hợp lệ

nếu hợp lệ thì quất 4 cái swith

switch1 :
case 1 : if ( n : 1000 ) = 1
printf( "Một nghìn " ); break ; // rồi lấy n % 1000 ra số có 3 chữ số
case 2 : // tương tự

switch2 : // n : 100
switch3 : // n : 10
switch4 : // n :


nói chung là cú pháp tự làm đi cho quen , nói vậy đủ rồi
thank bác, hiểu rồi
Reply With Quote
  #6  
Old 12-06-2010, 15:53
tokochan's Avatar
tokochan tokochan is offline
Senior Member
 
Join Date: 08-2009
Location: Hà Nội City
Posts: 860
Send a message via Yahoo to tokochan Send a message via Skype™ to tokochan
Re: Nhờ các bác biết lập trình hướng dẫn em ạ

#include <stdio.h>
#include <conio.h>

void main ()
{
int num_huynd;
int hn_huynd,ht_huynd,hc_huynd,hdv_huynd;

printf("Nap vao mot so co 4 chu so (tu 1000 den 9999) : ");
scanf(" %d",&num_huynd);

if( num_huynd<1000 || num_huynd>9999)
printf("Ban da nhap sai.\n");
else
{
hn_huynd = num_huynd/1000;
ht_huynd = num_huynd%1000/100;
hc_huynd = num_huynd%1000%100/10;
hdv_huynd = num_huynd%1000%100%10;
switch (hn_huynd)
{
case 1 :
printf("Mot nghin ");
break;
case 2 :
printf("Hai nghin ");
break;
case 3 :
printf("Ba nghin ");
break;
case 4 :
printf("Bon nghin ");
break;
case 5 :
printf("Nam nghin ");
break;
case 6 :
printf("Sau nghin ");
break;
case 7 :
printf("Bay nghin ");
break;
case 8 :
printf("Tam nghin ");
break;
case 9 :
printf("Chin nghin ");
break;
}

switch (ht_huynd)
{
case 0 :
printf("khong tram ");
break;
case 1 :
printf("mot tram ");
break;
case 2 :
printf("hai tram ");
break;
case 3 :
printf("ba tram ");
break;
case 4 :
printf("bon tram ");
break;
case 5 :
printf("nam tram ");
break;
case 6 :
printf("sau tram ");
break;
case 7 :
printf("bay tram ");
break;
case 8 :
printf("tam tram ");
break;
case 9 :
printf("chin tram ");
break;

}
switch(hc_huynd)
{

case 0:
printf("le ");
break;
case 1:
printf("muoi ");
break;
case 2:
printf("hai muoi ");
break;
case 3:
printf("ba muoi ");
break;
case 4:
printf("bon muoi ");
break;
case 5:
printf("nam muoi ");
break;
case 6:
printf("sau muoi ");
break;
case 7:
printf("bay muoi ");
break;
case 8:
printf("tam muoi ");
break;
case 9:
printf("chin muoi ");
break;
}


switch(hdv_huynd)
{
case 1:
printf("mot");
break;
case 2:
printf("hai");
break;
case 3:
printf("ba");
break;
case 4:
printf("bon");
break;
case 5:
printf("nam");
break;
case 6:
printf("sau");
break;
case 7:
printf("bay");
break;
case 8:
printf("tam");
break;
case 9:
printf("chin");
break;

}

getch();

}
}



đoạn em code đây, chạy rồi, em muốn nờ chút nữa là sửa thế nào để lúc nhập vào 1000, 2000 hay 3000 ... nó ra đúng một nghìn, hai nghìn thôi.
thank các bác phát nữa
Reply With Quote
  #7  
Old 12-06-2010, 16:22
ducgiang ducgiang is online now
Junior Member
 
Join Date: 03-2010
Posts: 15
Re: Nhờ các bác biết lập trình hướng dẫn em ạ

Mình học Java, nhưng ý tưởng đại khái thế này

Gọi số có 4 chữ số là abcd.

array1 = ("mot nghin", "hai nghin" ... "chin nghin")
array2 = ("khong tram", "mot tram", "hai tram" ...."chin tram")
array3 = ("linh", "muoi", "hai muoi" ... "chin muoi")
array4 = ("mot", "hai", ..."chin")

if ( d != 0)
{
print array1[a-1] + array2[b] + array3[c] + array4[d-1]
}
else if (d == 0 && c == 0 && b == 0)
{
print array1[a-1]
}
else if (d == 0 && c == 0 && b != 0)
{
print array1[a-1] + array2[b]
}
else if (d == 0 && c != 0 && b != 0)
{
print array1[a-1] + array2[b] + array3[c]
}
Reply With Quote
  #8  
Old 12-06-2010, 16:25
MèoConĐiHọc's Avatar
MèoConĐiHọc MèoConĐiHọc is offline
Senior Member
 
Join Date: 11-2009
Location: gầm cầu sông Hàn
Posts: 468
Re: Nhờ các bác biết lập trình hướng dẫn em ạ

Em chả biết C, biết Pascal thôi. Nhưng mà chắc cũng tương tự

_ Thường thì để ràng buộc điều kiện nhập xài Repeat nó khoa học hơn, nhập sai phải nhập lại (bên C hàm tương tự chắc có). Chứ đoạn mã của bác nó nhập sai rồi báo lỗi, xong End thì không hay (nếu em k nhầm).

_ Sau khi ktra đkiện nhập thỏa mãn. Thì nếu chia hết cho 1000 thì case với 9 trường hợp. If ... then Begin Case of End Else rồi mới tiếp cái đoạn mã của bác.

Sai thì đừng quăng gạch em

Last edited by MèoConĐiHọc; 12-06-2010 at 16:29.
Reply With Quote
  #9  
Old 12-06-2010, 16:31
ducgiang ducgiang is online now
Junior Member
 
Join Date: 03-2010
Posts: 15
Re: Nhờ các bác biết lập trình hướng dẫn em ạ

Sửa lại cho dễ hiểu


if (abcd chia hết cho 1000)
{
print array1[a-1]
}
else if (abcd chia hết cho 100)
{
print array1[a-1] + array2[b]
}
else if (abcd chia hết cho 10)
{
print array1[a-1] + array2[b] + array3[c]
}
else
{
print array1[a-1] + array2[b] + array3[c] + array4[d-1]
}
Reply With Quote
  #10  
Old 12-06-2010, 16:36
tokochan's Avatar
tokochan tokochan is offline
Senior Member
 
Join Date: 08-2009
Location: Hà Nội City
Posts: 860
Send a message via Yahoo to tokochan Send a message via Skype™ to tokochan
Re: Nhờ các bác biết lập trình hướng dẫn em ạ

Quote:
Originally Posted by MèoConĐiHọc View Post
Em chả biết C, biết Pascal thôi. Nhưng mà chắc cũng tương tự

_ Thường thì để ràng buộc điều kiện nhập xài Repeat nó khoa học hơn, nhập sai phải nhập lại (bên C hàm tương tự chắc có). Chứ đoạn mã của bác nó nhập sai rồi báo lỗi, xong End thì không hay (nếu em k nhầm).

_ Sau khi ktra đkiện nhập thỏa mãn. Thì nếu chia hết cho 1000 thì case với 9 trường hợp. If ... then Begin Case of End Else rồi mới tiếp cái đoạn mã của bác.

Sai thì đừng quăng gạch em
đây là chưa học đến phần lặp bạn ạ, mới đến if_ else vs switch thôi
Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump





All times are GMT +7. The time now is 07:33.


Steam Powered by vBulletin® 0.1 pre-alpha
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.