Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 17 kết quả

Đề tài: Lập trình C | Chỉ cho nhập số viết trên C

  1. #1
    No Avatar
    vddking2 Khách

    Mặc định Lập trình C | Chỉ cho nhập số viết trên C

    CÓ cách nào mà chỉ cho mình nhập số, còn nếu là ký tự thì ko đc ko?

  2. #2
    Ngày gia nhập
    12 2006
    Bài viết
    72

    Bạn dựa vào bảng mã ASCII rồi giới hạn nó lại là ok! cái này bạn có thể dùng câu lệnh do..while hoặc kết hợp giữa if và goto.
    Chúc giáng sinh vui vẻ!

  3. #3
    No Avatar
    vddking2 Khách

    Nếu chỉ có thế thì mình hỏi làm gì! ý mình là lúc người dùng đang nhập mà nó nhận biết ko cho nhập luôn ấy. Ví dụ khi nhập số thì nó hiện ra còn khi nhập chữ thì nó ko hiện ấy hay kêu tiếng bip luôn.

  4. #4
    Ngày gia nhập
    12 2006
    Bài viết
    72

    Thì bạn đã thử dùng các lệnh như mình nói chưa? mình nghĩ là được đó, nếu bạn dùng các lệnh đó không được thì mình sẽ post code lên, sẽ đúng yêu cầu của bạn là ok chứ?
    Chúc giáng sinh vui vẻ!

  5. #5
    Ngày gia nhập
    09 2006
    Bài viết
    16

    ặc, cái code mà bạn nói thì mình gnhĩ sẽ hơi khó, nếu nhập vào sau đó nó báo là ko hợp lệ thì được, chứ nếu khi đang nhập mà nó nhận biết được thì hơi khó à
    nothing is impossible

  6. #6
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Mặc định Lập trình C | Chỉ cho nhập số viết trên C

    cái này thì hơi bị phức tạp. Vì nó phụ thuộc hệ thống ... nói dài dòng lắm .
    Vì khi nhập tư phím vào tất cả đều bị convert sang string như thế mới in ra được màn hình. Cho nên cái vấn đề này không nên đề cập ở C
    None!

  7. #7
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mấy hôm Dreaminess khá bận vì có một Project cần làm ngay.

    Nhưng hôm nay đã tạm ổn, nên viết cái code này, mọi người tham khảo nhé. OK?

    Code:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    	int i=0,df=0;
    	char num[50], getnum;
    	do
    	{
    		getnum=getch();
    		num[i]=getnum;
    		if(i==0)
    			{
    				if(getnum=='.')
    					{
    						putchar(getnum);
    						df=1;
    						i++;
    					}else
    						if(getnum=='-'||(getnum>47 && getnum<59))
    							{
    								putchar(getnum);
    								i++;
    							}
    			}else
    				if((getnum=='.' && df==0)||(getnum>47 && getnum<59))
    					if(getnum=='.')
    						{
    							putchar(getnum);
    							df=1;
    							i++;
    						}else
    							{
    								putchar(getnum);
    								i++;
    							}
    	}while(getnum!=13);
    	printf("\n%s",num); // Kiểm tra kết quả, kết quả dạng chuỗi, bạn cần chuyển sang số mới dùng được.
    }
    Ah, Dreaminess viết bằng cái UE studio nên trông khoảng tab nó hơi rộng, mọi người edit cho phù hợp với editor của mình nhé.

    Đây là Dreaminess mới viết để nhập số decimal thông thường, nếu muốn cho nhập số dưới dạng số Extend Decimal thì chỉ cần thêm chút điều kiện là OK. Cũng đơn giản.

    Nếu bạn nào muốn làm dạng kỹ thuật cao thì sử dụng ngắt ấy, hay embe cái ASM vào thì tốt hơn nhiều, nhưng mà nếu làm được nhớ cho Dreaminess tham khảo với nhé.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  8. #8
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Trích dẫn Nguyên bản được gửi bởi Dreaminess
    Mấy hôm Dreaminess khá bận vì có một Project cần làm ngay.

    Nhưng hôm nay đã tạm ổn, nên viết cái code này, mọi người tham khảo nhé. OK?

    Code:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    	int i=0,df=0;
    	char num[50], getnum;
    	do
    	{
    		getnum=getch();
    		num[i]=getnum;
    		if(i==0)
    			{
    				if(getnum=='.')
    					{
    						putchar(getnum);
    						df=1;
    						i++;
    					}else
    						if(getnum=='-'||(getnum>47 && getnum<59))
    							{
    								putchar(getnum);
    								i++;
    							}
    			}else
    				if((getnum=='.' && df==0)||(getnum>47 && getnum<59))
    					if(getnum=='.')
    						{
    							putchar(getnum);
    							df=1;
    							i++;
    						}else
    							{
    								putchar(getnum);
    								i++;
    							}
    	}while(getnum!=13);
    	printf("\n%s",num); // Kiểm tra kết quả, kết quả dạng chuỗi, bạn cần chuyển sang số mới dùng được.
    }
    code của cậu hình như có vấn đề ! thử code mình xem có giống ý tưởng của cậu không? ý hình như cậu viết cho cả kiểu số thực phải không?
    Code:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    	int i=0,df=0;
    	char num[50], getnum;
    	
    	while((getnum=getch())!=13)
    	{
    		if(getnum>='0'&&getnum<='9'&&i<49)
    		{
    			num[i]=getnum;
    			putchar(getnum);
    			i++;
    		}
    	}
    	num[i]=0;
    	printf("\n%s",num);
    	
    }

  9. #9
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Nếu nhập số bất kỳ cả nguyên cả thực thì code trên được edit lại như sau:

    Code:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    	int i=0,df=0;
    	int bflag=0;
    	char num[50], getnum;
    	
    	while((getnum=getch())!=13)
    	{
    		if(getnum>='0'&&getnum<='9'&&i<49)
    		{
    			num[i]=getnum;
    			putchar(getnum);
    			i++;
    		}
    		else if(i==0&&getnum=='-')
    		{
    			num[i]=getnum;
    			putchar(getnum);
    			i++;
    			
    		}
    		else if(bflag==0&&i>0&&getnum=='.')
    		{
    			bflag++;
    			num[i]=getnum;
    			putchar(getnum);
    			i++;
    		}
    	}
    	num[i]=0;
    	printf("\n%s",num);
    	
    }

  10. #10
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Được gọi là số thì tất nhiên là cả số thực nữa chứ?
    Code của bạn trông dễ coi hơn nhưng Dreaminess lưu ý với shinichi_haha chút nhé:
    - Một số dạng ".02356" cũng được coi là một số thực đó, chắc bạn chưa nghĩ tới điều này????
    - Ngoài ra bạn đã sử dụng điều kiện i<49, Dreaminess thấy hơi thừa. Nếu muốn sử dụng thêm điều kiện này thì còn phức tạp hơn thế nhiều và theo Dreaminess điều kiện cho i không phải là 49???? Bạn thử nghĩ xem tại sao? và điều kiện cho i là bao nhiêu nhé?

    Chúc cả nhà vui vẻ.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

Các đề tài tương tự

  1. Kỹ Thuật Nhận Dạng Chữ Viết Tay - Phương pháp và các thực hiện trên C#
    Gửi bởi lttq trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 11
    Bài viết cuối: 22-04-2015, 04:34 PM
  2. Viết chương trình phát ra 1 bản nhạc trên C# Console
    Gửi bởi smhoa trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-04-2013, 06:49 PM
  3. Mong nhận được sự giúp đỡ của mọi người về cách đặt chỗ trên web viết bằng ASP.NET
    Gửi bởi kunkun1991 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 0
    Bài viết cuối: 15-04-2013, 12:37 AM
  4. Cách đưa âm thanh(1 bản nhạc) vào chương trình c# viết trên console
    Gửi bởi tan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 17-11-2011, 08:49 PM
  5. Nhận dạng chữ số viết tay trên C++?
    Gửi bởi LeeHuynBin trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 28-04-2009, 06:36 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn