Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1

    Lỗi khi vừa nhập vừa kiểm tra một chuỗi có phải là chuỗi số nguyên hay không?

    Đây là đoạn code của mình.
    Mã:
    #include <conio.h>
    #include <stdio.h>
    
    void nhap_chuoi_int(char s[])
    {
    	int c, i = 0;
    	c = getche(); // Đọc một kí tự từ bàn phím
    	while(c!='
    '||i==0){
    		if('0'<=c&&c<='9'){ // Kiểm tra có phải số hay không
    			s[i++] = c;
    		}else if(c=='\b'&&i>0){ 
    			printf(" \b"); // Kiểm tra nếu là Backspace thì xóa phần tử trước đó
    		}else{
    			printf("\b \b"); // Không cho nhận bất cứ kí tự nào ngoài số
    		}
    		c = getche(); // Đọc kí tự tiếp theo
    	}
    	s[i] = '\0'; // Thêm kí tự kết thúc chuỗi
    	printf("
    ");
    }
    
    int main()
    {
    	char s[1000];
    	printf("NHAP MOT SO NGUYEN: ");
    	nhap_chuoi_int(s);
    	printf("SO BAN VUA NHAP LA: ");
    	puts(s);
    	return 0;
    }
    Mục đích của đoạn code là chỉ cho phép nhập một chuỗi số nguyên từ bàn phím, nếu gặp kí tự không phải số thì không hiện ra. Sau khi nhập xong nhấ Enter để kết thúc và xuất chuỗi đã nhập.

    Đoạn code hoạt chỉ hoạt động tốt khi chỉ nhập các kí tự BÌNH THƯỜNG, còn nếu gặp các phím điều khiển lại bị lỗi.[IMG]images/smilies/waiting.gif[/IMG]
    Ví dụ: Khi nhấn Backspace thì nó sẽ xóa nguyên hàng. Hoặc khi nhấn Enter mà chưa nhập gì thì con trỏ văn bản quay về đầu hàng, khi nhập sẽ ghi đè lên các chữ đã có sẵn. Và còn rất nhiều lỗi liên quan đến các phím điều khiển nữa.
    Mong các bạn cho mình ý kiến khắc phục triệt để các lỗi này. Cám ơn nhiều.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mã:
    #include <iostream> using namespace std; int main(){    string s;    cout<<"Nhap chuoi:";    cin>>s;    for(int i=0;i<s.length();i++)    {        if(s[i]<'0' || s[i]>'9'){            cout<<"Khong phai so."<<endl;            return 0;        }    }    cout<<"La so."<<endl;    return 0;}

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •