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
    Ngày tham gia
    Sep 2015
    Đang ở
    Số 60 Thái Hà, Đống Đa, Hà Nội
    Bài viết
    0

    Lỗi nhập dữ liệu kiểu char trong class

    Mã:
    class gv: public pe
    {
    	protected:
    		char lld[1],mon[3];
    		int bb,kth;	
    	public:
    		void nhapgv(void)
    		{	
    			kth=0;
    			cout<<"Nhap ten bo mon: ";
    			fflush(stdin);
    			cin>>mon;
    			cout<<"Nhap so bai bao: ";
    			cin>>bb;		
    			cout<<"Nhap loai lao dong: ";
    			fflush(stdin);
    			cin>>lld;
    		}
    		void xuatgv(void)
    		{
    			cout.fill(' ');
    			cout.setf(ios::left);
    			cout.width(9);
    			cout<<ms;
    			cout.width(20);
    			cout<<ht;
    			cout.width(11);
    			cout<<mon;
    			cout.width(5);
    			cout<<nam;
    			cout.width(13);
    			cout<<qq;
    			cout.width(9);
    			cout<<lld;
    			cout.width(10);
    			cout<<bb;
    			cout<<"
    ";
    		}
    		int ktgv(void)
    		{
    			if ((nam>1970) && (_strcmpi(qq,"HCM")==0) && (_strcmpi(lld,"A")==0) && (bb>0))
    			{
    				kth=1;
    				if (_strcmpi(mon,"KMT")==0)
    					return 1;
    				else if (_strcmpi(mon,"DVT")==0)
    					return 2;
    				else if (_strcmpi(mon,"KDD")==0)
    					return 3;
    			}
    		}
    };
    E bị vấn đề này cả ngày hôm nay rồi e cũng mới học C++ nên mong được mọi người chỉ giáo.
    trong nhapgv() của e có vấn đề là e không nhập cin>>mon được. E có thử chạy từng bước thì thấy vẫn nhập được nhưng khi chạy qua dòng cin>>lld; thì biến mon=0 rồi e thử thay đổi vị trí của cin>>mon như thế này
    Mã:
    void nhapgv(void)
    		{	
    			kth=0;
    			cout<<"Nhap so bai bao: ";
    			cin>>bb;		
    			cout<<"Nhap loai lao dong: ";
    			fflush(stdin);
    			cin>>lld;
                            cout<<"Nhap ten bo mon: ";
    			fflush(stdin);
    			cin>>mon;
    		}
    thì khi e nhập cin>>mon được nhưng khi nhập lld thì bị dính với mon. Ví dụ:
    e nhập lld="A"
    mon="KMT"
    thì khi xuất ra giá trị của lld="AKMT" e không biết làm như thế nào dù thử hết mọi cách như cin.ignore hoặc fflush cũng như dùng gets thay cho cin mà vẫn không được.
    Thứ 7 này e nộp bài rồi mong các cao thủ giúp đỡ ( e cám ơn rất nhiều (

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    sửa lại

    Mã:
    char lld[2], mon[4];
    1 string ngoài các kí tự bình thường ra thì cuối string đó còn có ký tự null ('\0') để đánh dấu kết thúc string, vì vậy bạn phải để thừa ra 1 phần tử cho cái ký tự này

 

 

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
  •