Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Mình bị lỗi khi nhập chuỗi

  1. #1
    Ngày gia nhập
    02 2008
    Bài viết
    28

    Mặc định Mình bị lỗi khi nhập chuỗi

    Mình có bài như sau:
    C++ Code:
    1. /*
    2. Nhap danh sach sinh vien gom ho ten, ngay sinh, hoc bong
    3. sap xep theo hoc bong giam dan
    4. */
    5. #include<iostream.h>
    6. #include<conio.h>
    7.  
    8. struct sinhvien
    9. {
    10.     char hoten[30];
    11.     char ngaysinh[10];
    12.     float hocbong; 
    13. };
    14. class mangsinhvien
    15. {
    16.     sinhvien *a;
    17.     int n;
    18.     public:
    19.         void nhap();
    20.         void sapxep();
    21.         void hien1();
    22.         void hien2();
    23. };
    24.  
    25. void mangsinhvien::nhap()
    26. {
    27.     cout<<"Nhap vao so luong sinh vien: ";
    28.     cin>>n;
    29.     cout<<"\nNHAP VAO DANH SACH SINH VIEN\n";
    30.     a=new sinhvien[n];
    31.     for(int i=0;i<n;i++)
    32.     {
    33.         cout<<"Nhap vao ten sinh vien thu "<<i+1<<" :";cin>>a[i].hoten;
    34.         cout<<"Nhap vao ngay sinh cua sinh vien thu "<<i+1<<" :";cin>>a[i].ngaysinh;
    35.         cout<<"Nhap vao hoc bong cua sinh vien thu "<<i+1<<" :";cin>>a[i].hocbong;
    36.         cout<<"\n";
    37.     }
    38. }
    39.  
    40. void mangsinhvien::sapxep()
    41. {
    42.     sinhvien tg;
    43.     for(int i=0;i<n-1;i++)
    44.         for(int j=i+1;j<n;j++)
    45.         {
    46.             if(a[i].hocbong<a[j].hocbong)
    47.                 {
    48.                     tg=a[i];
    49.                     a[i]=a[j];
    50.                     a[j]=tg;
    51.                 }
    52.         }
    53. }
    54.  
    55.  
    56. void mangsinhvien::hien1()
    57. {
    58.     cout<<"\nDANH SACH SINH VIEN VUA NHAP\n";
    59.     for(int i=0;i<n;i++)
    60.     {
    61.         cout<<"Ten sinh vien thu "<<i+1<<" :"<<a[i].hoten<<"\n";
    62.         cout<<"Ngay sinh cua sinh vien thu "<<i+1<<" :"<<a[i].ngaysinh<<"\n";
    63.         cout<<"Hoc bong cua sinh vien thu "<<i+1<<" :"<<a[i].hocbong<<"\n";
    64.         cout<<"\n";
    65.     }
    66. }
    67.  
    68.  
    69. void mangsinhvien::hien2()
    70. {
    71.     cout<<"\nDANH SACH SINH VIEN SAU KHI SAP XEP\n";
    72.     for(int i=0;i<n;i++)
    73.     {
    74.         cout<<"Ten sinh vien thu "<<i+1<<" :"<<a[i].hoten<<"\n";
    75.         cout<<"Ngay sinh cua sinh vien thu "<<i+1<<" :"<<a[i].ngaysinh<<"\n";
    76.         cout<<"Hoc bong cua sinh vien thu "<<i+1<<" :"<<a[i].hocbong<<"\n";
    77.         cout<<"\n";
    78.     }
    79. }
    80.  
    81. void main()
    82. {
    83.     //clrscr();
    84.     mangsinhvien sv;
    85.     sv.nhap();
    86.     sv.hien1();
    87.     sv.sapxep();
    88.     sv.hien2();
    89.     //getch();
    90. }

    Mình nếu nhập tên không có dấu cách thì không sao nhưng khi nhập có dấu cách thì bị lỗi, ví dụ khi gõ tên là nguyễn văn a thì nguyễn rơi vào tên còn văn rơi vào phần năm sinh còn a thì bị rơi vào phần học bổng. Tương tự nếu ngày sinh mà có dấu cách thì chữ sau dấu cách rơi vào học bổng.
    Các bác sửa giúp với.

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    for(int i=0;i<n;i++)
    {
    cout<<"Nhap vao ten sinh vien thu "<<i+1<<" :";cin>>a[i].hoten;
    cout<<"Nhap vao ngay sinh cua sinh vien thu "<<i+1<<" :";cin>>a[i].ngaysinh;
    cout<<"Nhap vao hoc bong cua sinh vien thu "<<i+1<<" :";cin>>a[i].hocbong;
    cout<<"\n";
    }
    Nhập chuỗi thì bạn nên dùng getline()
    - Hoặc getline(cin,..);
    - Hoặc cin.getline()

    Nếu vẫn bị trôi bạn sử dụng hàm xóa vùng nhập, trước khi dùng hàm nhập chuỗi. Nó là ignore()

    Tham khảo google để biết thêm chi tiết.

    Mà phần hiện danh sách thì bạn dùng một cái thôi chứ, cái dòng in ra trước hay sau sắp xếp thì để ngoài hàm đi bạn.

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

  1. Lập trình C++ Lệnh cin.getline() không thể nhập chuỗi kế tiếp khi trước đó đã nhập 1 chuỗi vượt quá số kí tự tối đa khi khai báo
    Gửi bởi alonesnail025 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 23-06-2013, 11:34 AM
  2. Bài tập C++ Cách để so sánh 2 chuỗi kí tự giữa chuỗi nhập từ phím và chuỗi từ file xem có giống nhau không?
    Gửi bởi davilson18 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 09-06-2012, 09:47 AM
  3. Trả lời: 0
    Bài viết cuối: 13-05-2012, 10:51 AM
  4. Trả lời: 1
    Bài viết cuối: 29-06-2011, 12:02 AM
  5. Kỹ thuật C++ Các quy tắc nhập chuỗi trong C++, làm thế nào để nhập chuỗi có khoảng trắng?
    Gửi bởi quyen1991 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 20-11-2010, 03: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