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

Đề tài: Tìm và in ra những học sinh nam có điểm TB>=8.0.

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

    Post Tìm và in ra những học sinh nam có điểm TB>=8.0.

    Cho danh sách học sinh, mỗi học sinh có các thông tin: Họ và tên, năm sinh, giới tính, điểm trung bình.
    a) Hãy biểu diễn CTDL của danh sách trên dới dạng một danh sách móc nối đơn.
    b) Dựa vào CTDL đã biểu diễn ở trên viết các thủ tục:
    + Nhập danh sách học sinh nói trên, việc nhập dừng lại khi họ tên của học sinh nhập vào là xâu rỗng.
    + Tìm và in ra những học sinh nam có điểm TB>=8.0.
    + Thêm một học sinh mới vào vị trí thứ k trong danh sách (xử lý trờng hợp vị trí k không thoả mãn).

    Mình thì làm đc cái nhập và thêm vào k. còn cái tìm và in ra thì loay hoay mãi mà vẫn ko có tiến triển gì mong mọi người cùng thảo luận và hoàn thành code. thanks
    C++ Code:
    1. #include<conio.h>
    2. #include<stdio.h>
    3. #include<iostream.h>
    4. #include<string.h>
    5. #include<iomanip.h>
    6. struct sinhvien
    7. {
    8.     char hoten[40];
    9.     int namsinh;
    10.     char gioitinh[10];
    11.     float dtb;
    12. };
    13. struct node
    14. {
    15.     sinhvien infor;
    16.     node*next;
    17. };
    18. typedef node*TRO;
    19. TRO L;
    20. void creat(TRO &L)
    21. {
    22.     L=NULL;
    23. }
    24. int empty(TRO L)
    25. {
    26.     return(L==NULL);
    27. }
    28. void nhap(sinhvien &sv)
    29. {
    30.     cout<<"Nhap ho ten:";fflush(stdin);gets(sv.hoten);
    31.     if(sv.hoten[0]==NULL) return;
    32.     cout<<"Nhap nam sinh:";cin>>sv.namsinh;
    33.     cout<<"Nhap gioi tinh:";fflush(stdin);gets(sv.gioitinh);
    34.     cout<<"Nhap diem trung binh:";cin>>sv.dtb;
    35. }
    36. void input_list(TRO &L)
    37. {
    38. TRO P,Q;
    39. sinhvien x;
    40. int i=1;
    41. Q=L=NULL;
    42. while(1)
    43. {
    44.     cout<<"Nhap sinh vien thu "<<i<<" la:"<<endl;
    45.      nhap(x);
    46.     if(x.hoten[0]!=NULL)
    47.     {
    48.      P=new node;
    49.      P->infor=x;
    50.      P->next=NULL;
    51.      if(L==NULL) L=P;
    52.      else Q->next=P;
    53.      Q=P;
    54.     }
    55.     else break;
    56. }
    57. }
    58. void hienthi(TRO L)
    59. {
    60.     TRO Q;
    61.     if(!empty(L))
    62.     {
    63.         Q=L;
    64.         cout<<setw(10)<<"Ho ten";
    65.         cout<<setw(15)<<"nam sinh";
    66.         cout<<setw(15)<<"Gioi tinh";
    67.         cout<<setw(15)<<"DTB"<<endl;
    68.         while(Q!=NULL)
    69.         {
    70.             cout<<setw(10)<<Q->infor.hoten;
    71.             cout<<setw(15)<<Q->infor.namsinh;
    72.             cout<<setw(15)<<Q->infor.gioitinh;
    73.             cout<<setw(15)<<Q->infor.dtb<<endl;
    74.             Q=Q->next;
    75.         }
    76.     }
    77. }
    78. void chendau(TRO &L,sinhvien x)
    79. {
    80.     TRO P;
    81.     P=new node;
    82.     P->infor=x;
    83.     P->next=L;
    84.     L=P;
    85. }
    86. void chen(TRO &L,TRO Q,sinhvien x)
    87. {
    88.     TRO P;
    89.     P=new node;
    90.     P->infor =x;
    91.     P->next=Q->next;
    92.     Q->next=P;
    93. }
    94. void bosung(TRO &L,int k,sinhvien x)
    95. {
    96.     if(k==1)
    97.     chendau(L,x);
    98.     else
    99.     {
    100.         int d=1;
    101.         TRO Q=L;
    102.         while(d<k-1)
    103.         {
    104.             Q=Q->next;
    105.             d++;
    106.         }
    107.         chen(L,Q,x);
    108.        
    109.     }
    110.     cout<<"Danh sach sau khi bo sung:"<<endl;
    111.     hienthi(L);
    112. }
    113.  
    114. void main()
    115. {
    116.     TRO L;
    117.     sinhvien x;
    118.     input_list(L);
    119.     hienthi(L);
    120.     int k;
    121.     cout<<"Nhap vi tri can bo sung:";cin>>k;
    122.     cout<<"Nhap thong tin sinh vien can bo sung:"<<endl;
    123.     nhap(x);
    124.     bosung(L,k,x);
    125.     getch();
    126. }
    Tôi đi không nhanh nhưng không bao giờ lùi

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

    Liên tưởng về mảng struct
    for(int i =0;i<n;i++)
    ...if(a[i]. gì gì đấy thỏa điều kiện)
    ......xuất ra.
    DSLK tương tự
    for(TRO p=L;p!=NULL;p=p->next)
    ...if(p-> gì gì đấy thỏa điều kiện)
    ......xuất ra;
    Đã được chỉnh sửa lần cuối bởi clchicken : 12-01-2012 lúc 11:01 PM.
    Um Mani Padme Hum...!!

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

    đã khắc phục đc . thanks
    Tôi đi không nhanh nhưng không bao giờ lùi

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