Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 25 kết quả

Đề tài: Lỗi dừng nhập khi nhập vào masv là ‘*’

  1. #1
    Ngày gia nhập
    05 2011
    Nơi ở
    Hanoi, Vietnam, Vietnam
    Bài viết
    114

    Mặc định Lỗi dừng nhập khi nhập vào masv là ‘*’

    Mọi người ơi xem hộ mình code này .
    Làm sao để khi nhập thông tin của các sinh viên trên vào DS dừng nhập khi nhập vào masv là ‘*’.
    mình làm mãi mà chưa ra . thanks
    C++ Code:
    1. #include<iostream.h>
    2. #include<conio.h>
    3. #include<stdio.h>
    4. #include<string.h>
    5. #include<iomanip.h>
    6. struct sinhvien
    7. {
    8.     char masv[10];
    9.     char hoten[40];
    10.     float dtb;
    11. };
    12. struct node
    13. {
    14.     sinhvien infor;
    15.     node*next;
    16. };
    17. typedef node*TRO;
    18. TRO L;
    19. void creat(TRO &L)
    20. {
    21.     L=NULL;
    22. }
    23. int empty(TRO L)
    24. {
    25.     return L==NULL;
    26. }
    27. void nhapsv(sinhvien &sv)
    28. {
    29.     cout<<"Nhap masv:";fflush(stdin);gets(sv.masv);
    30.     cout<<"Nhap ho ten:";fflush(stdin);gets(sv.hoten);
    31.     cout<<"Nhap diem tong ket:";cin>>sv.dtb;
    32. }
    33. void input_list(TRO L)
    34. {
    35.     TRO P,Q;
    36.     sinhvien x;
    37.     int i=1;
    38.     Q=L=NULL;
    39.     while(true)
    40.     {
    41.         cout<<"Nhap sinh vien thu "<<i<<" la:"<<endl;
    42.         nhapsv(x);
    43.         if(x.masv!='*')
    44.         {
    45.         P=new node;
    46.         P->infor=x;
    47.         P->next=NULL;
    48.         if(L==NULL) L=P;
    49.         else Q->next=P;
    50.         Q=P;
    51.         i++;
    52.         }
    53.     }
    54. }
    55. void hienthi(TRO L)
    56. {
    57.      TRO Q;
    58.      if(!empty(L))
    59.      {
    60.                   Q=L;
    61.                   cout<<setw(10)<<"MaSV";
    62.                   cout<<setw(10)<<"HoTen";
    63.                   cout<<setw(10)<<"DTB"<<endl;
    64.                   while(Q!=NULL)
    65.                   {
    66.                   cout<<setw(10)<<Q->infor.masv;
    67.                   cout<<setw(10)<<Q->infor.hoten;
    68.                   cout<<setw(10)<<Q->infor.dtb<<endl;
    69.                   Q=Q->next;
    70.                   }
    71.      }
    72. }
    73. void main()
    74. {
    75.     TRO L;
    76.     sinhvien x;
    77.     input_list(L);
    78.     hienthi(L);
    79. }
    Tôi đi không nhanh nhưng không bao giờ lùi

  2. #2
    Ngày gia nhập
    05 2011
    Bài viết
    299

    kiểm tra nếu người dùng nhập "*" thì dừng.
    dùng if, while, do...while .v.v.
    p/s: thêm cái else break; vào
    Programming tutorials and source code examples

    Trong nhà không vợ không con
    Uống bia gặm thịt sao ngon thế này
    Nhậu nhẹt không bị la rầy
    Một tuần ta cứ bảy ngày " nâng ly "....

  3. #3
    Ngày gia nhập
    05 2011
    Nơi ở
    Hanoi, Vietnam, Vietnam
    Bài viết
    114

    Trích dẫn Nguyên bản được gửi bởi rossoneri Xem bài viết
    kiểm tra nếu người dùng nhập "*" thì dừng.
    dùng if, while, do...while .v.v.
    mình cũng đã thử dùng while , if nhưng ko đc? bạn xem code đi
    Tôi đi không nhanh nhưng không bao giờ lùi

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    552

    C++ Code:
    1. while(true)
    2.     {
    3.         cout<<"Nhap sinh vien thu "<<i<<" la:"<<endl;
    4.         nhapsv(x);
    5.         if(x.masv!='*')
    6.         {
    7.         P=new node;
    8.         P->infor=x;
    9.         P->next=NULL;
    10.         if(L==NULL) L=P;
    11.         else Q->next=P;
    12.         Q=P;
    13.         i++;
    14.         }
    15.     }
    Vòng lặp này sao ko thấy dừng thế này @@
    Um Mani Padme Hum...!!

  5. #5
    Ngày gia nhập
    05 2011
    Nơi ở
    Hanoi, Vietnam, Vietnam
    Bài viết
    114

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    C++ Code:
    1. while(true)
    2.     {
    3.         cout<<"Nhap sinh vien thu "<<i<<" la:"<<endl;
    4.         nhapsv(x);
    5.         if(x.masv!='*')
    6.         {
    7.         P=new node;
    8.         P->infor=x;
    9.         P->next=NULL;
    10.         if(L==NULL) L=P;
    11.         else Q->next=P;
    12.         Q=P;
    13.         i++;
    14.         }
    15.     }
    Vòng lặp này sao ko thấy dừng thế này @@
    hi! quên thiếu else break;
    nhưng vẫn ko đc bạn ạ
    nó báo lỗi chỗ if(x.masv!='*')
    Tôi đi không nhanh nhưng không bao giờ lùi

  6. #6
    Ngày gia nhập
    09 2010
    Nơi ở
    Hà Nội
    Bài viết
    381

    Mặc định Lỗi dừng nhập khi nhập vào masv là ‘*’

    dừng nhập khi nhập vào masv là '*'
    C Code:
    1. do
    2.     {
    3.         cout<<"Nhap sinh vien thu "<<i<<" la:"<<endl;
    4.         nhapsv(x);
    5.          P=new node;
    6.         P->infor=x;
    7.         P->next=NULL;
    8.         if(L==NULL) L=P;
    9.         else Q->next=P;
    10.         Q=P;
    11.         i++;
    12.     }while(x.masv == '*');

    Thử với cái này xem! nếu không được thì sửa while thành
    C Code:
    1. while(strcmp(x.masv,'*') == 0)

    skype: hvphu2010
    Yahoo: hvphu2010
    Sdt: 0129 609 4567

  7. #7
    Ngày gia nhập
    05 2011
    Nơi ở
    Hanoi, Vietnam, Vietnam
    Bài viết
    114

    sao vẫn ko đc nhỉ =))
    Tôi đi không nhanh nhưng không bao giờ lùi

  8. #8
    Ngày gia nhập
    09 2010
    Nơi ở
    Hà Nội
    Bài viết
    381

    vậy thì sửa thế này:
    C Code:
    1. do
    2.     {
    3.         cout<<"Nhap masv:";fflush(stdin);gets(sv.masv);
    4.     }while(x.masv == '*');

    skype: hvphu2010
    Yahoo: hvphu2010
    Sdt: 0129 609 4567

  9. #9
    Ngày gia nhập
    05 2011
    Nơi ở
    Hanoi, Vietnam, Vietnam
    Bài viết
    114

    Trích dẫn Nguyên bản được gửi bởi kitti Xem bài viết
    vậy thì sửa thế này:
    C Code:
    1. do
    2.     {
    3.         cout<<"Nhap masv:";fflush(stdin);gets(sv.masv);
    4.     }while(x.masv == '*');
    :(( thế này thì chạy làm sao đc
    Tôi đi không nhanh nhưng không bao giờ lùi

  10. #10
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Đề nghị bạn snoit khi so sánh 2 chuỗi thì dùng hàm strcmp . so sánh 2 chuỗi ko thể dùng toán tử == .
    cần khai báo thư viện string.h để sử dụng strcmp.
    Um Mani Padme Hum...!!

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

  1. Trả lời: 12
    Bài viết cuối: 25-10-2012, 02:48 AM
  2. Đánh số tự động tăng cho MaSV theo công thức cho sẵn
    Gửi bởi tan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 04-04-2012, 08:07 PM
  3. Bài tập C++ Nhập mảng 1 chiều, nếu phần tử nhập trùng nhau thì bắt nhập lại
    Gửi bởi danielh 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: 09-07-2011, 03:35 PM
  4. Tạo thủ tục có tham số vào @masv để đưa ra điểm rèn luyện của sinh viên trên.
    Gửi bởi iamse7en trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 07-04-2011, 11:23 PM
  5. tự sinh masv trong DataGridView
    Gửi bởi pxminh 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: 05-11-2010, 11:04 AM

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