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

Đề tài: Lỗi ở hàm xuất 5 năm gần nhất trong danh sách liên kết

  1. #1
    Ngày gia nhập
    01 2011
    Bài viết
    14

    Unhappy Lỗi ở hàm xuất 5 năm gần nhất trong danh sách liên kết

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <string.h>
    4. //#include <iostream.h>
    5.  
    6. //Tao struct diem
    7. typedef struct DIEM
    8. {
    9.     float diem1, diem2, diem3, diem_tb;
    10. };
    11. //Khoi tao doi tuong lop khoa luan tot nghiep  
    12. typedef struct KLTN
    13. {
    14.     char Ma_KLTN[10];
    15.     char Ten_KLTN[100];
    16.     char Hoten_SV[30];
    17.     char Hoten_GV[30];
    18.     int Namth_KLTN;
    19.     int so_KLTN;
    20.     DIEM *info_diem;
    21. };
    22. //Kieu phan tu cua danh sach    
    23. typedef struct node
    24. {
    25.     KLTN *info;
    26.     node *next;
    27. };
    28. typedef node *ptrnode;
    29. typedef ptrnode position;
    30. //danh sach lien ket
    31. typedef struct List
    32. {
    33.     node *phead;
    34.     node *ptail;
    35. };
    36.  
    37. //Khoi tao danh sach rong
    38. void makenull_List(List &L)
    39. {
    40.     L.phead=NULL;
    41.     L.ptail=NULL;      
    42. }
    43. //Tao struct doi tuong kltn
    44. //khoi tao ds rong
    45. void makenull_list (List &L)
    46. {
    47.     L.phead=NULL ;
    48.     L.ptail=NULL ;
    49. }
    50. //Tao struct doi tuong diem
    51. DIEM *makenull_diem()
    52. {
    53.     float d1,d2,d3,dtb;
    54.     DIEM *diem= new DIEM;
    55.     printf("\nNhap diem giam khao thu 1 la:");
    56.     scanf("%f",&d1);
    57.     while(d1<0 || d1>10)
    58.     {
    59.         printf("\nNam khong hop le:");
    60.         printf("\nVui long nhap lai:");
    61.         scanf("%d",&d1);
    62.     }
    63.     fflush(stdin);
    64.     diem->diem1=d1;
    65.     printf("\nNhap diem giam khao thu 2 la:");
    66.     scanf("%f",&d2);
    67.     while(d2<0 || d2>10)
    68.     {
    69.         printf("\nNam khong hop le:");
    70.         printf("\nVui long nhap lai:");
    71.         scanf("%d",&d2);
    72.     }
    73.     fflush(stdin);
    74.     diem->diem2=d2;
    75.     printf("\nNhap diem giam khao thu 3 la:");
    76.     scanf("%f",&d3);
    77.     while(d3<0 || d3>10)
    78.     {
    79.         printf("\nNam khong hop le:");
    80.         printf("\nVui long nhap lai:");
    81.         scanf("%d",&d3);
    82.     }
    83.     fflush(stdin);
    84.     diem->diem3=d3;
    85.     dtb=(d1+d2+d3)/3;
    86.     fflush(stdin);
    87.     diem->diem_tb=dtb;
    88.     return diem;
    89. }
    90. KLTN *makenull_kltn(DIEM *d)
    91. {
    92.     int n;
    93.     KLTN *kltn= new KLTN;
    94.     printf("\nNhap ma khoa luan tot nghiep: ");
    95.     fflush(stdin);
    96.     gets(kltn->Ma_KLTN);
    97.     printf("\nNhap ten khoa luan tot nghiep: ");
    98.     fflush(stdin);
    99.     gets(kltn->Ten_KLTN);
    100.     printf("\nNhap ten sinh vien thuc hien khoa luan tot nghiep: ");
    101.     fflush(stdin);
    102.     gets(kltn->Hoten_SV);
    103.     printf("\nNhap ten giao vien huong dan thuc hien khoa luan tot nghiep: ");
    104.     fflush(stdin);
    105.     gets(kltn->Hoten_GV);
    106.     printf("\nNhap nam thuc hien khoa luan tot nghiep:");
    107.     scanf("%d",&n);
    108.     while(n<1990 || n>2011)
    109.     {
    110.         printf("\nNam khong hop le:");
    111.         printf("\nVui long nhap lai:");
    112.         scanf("%d",&n);
    113.     }
    114.     kltn->Namth_KLTN=n;
    115.     fflush(stdin);
    116.     kltn->info_diem=d;
    117.     return kltn;
    118. }
    119. //Khoi tao kieu phan tu cho danh sach
    120. node *makenull_node(KLTN *p_kltn)
    121. {
    122.     node *p = new node;
    123.     if(p==NULL)
    124.         printf("Ket thuc danh sach!");
    125.     else
    126.     {
    127.         p->info=p_kltn;
    128.         p->next=NULL;
    129.     }
    130.     return p;
    131. }
    132. //Chen phan tu vao list
    133. void insert(List &L,node *newnode)
    134. {
    135.     if(L.phead==NULL)
    136.     {
    137.         L.phead=newnode ;
    138.         L.ptail=L.phead;
    139.     }
    140.     else
    141.     {
    142.         L.ptail->next=newnode;
    143.         L.ptail=newnode;
    144.     }
    145. }
    146. //Nhap danh sach kltn
    147. void nhap(List &L)
    148. {
    149.     int n;
    150.     KLTN *kltn= new KLTN;
    151.     printf("\nNhap vao so luong khoa luan tot nghiep");
    152.     scanf("%d",&n);
    153.     kltn->so_KLTN=n;
    154.     makenull_List(L);
    155.     for(int i=1; i<=n; i++)
    156.     {
    157.         DIEM *d= makenull_diem();
    158.         KLTN *kltn= makenull_kltn(d);
    159.         node *n= makenull_node(kltn);
    160.         insert(L,n);
    161.     }
    162.     getch();
    163. }
    164. //Tim nam co nhieu kltn nhat
    165. void aasearch_nam(List *L)
    166. {
    167.     node *p= L->phead;
    168.     node *q= L->phead;
    169.     KLTN *nam_tam = p->info;
    170.     int a[100];
    171.     int n=nam_tam->so_KLTN;
    172.     for(int i=0; i<n; i++)
    173.     {
    174.         a[i]=nam_tam->Namth_KLTN;
    175.     }
    176.     if(p==NULL)
    177.     {
    178.         printf("\nDanh sach rong!");
    179.     }
    180. }
    181.  
    182. //Tim 5 KLTN gan day nhat so voi nam 2011
    183.  
    184. void search_nam(List *L)
    185. {
    186.     int max;//chi nam nho nhat
    187.     node *p,*q,*i,*imax;
    188.     KLTN *namtemp;
    189.     namtemp = p->info;
    190.     p=L->phead;
    191.             printf("\n        DANH SACH 5 KHOA LUAN TOT NGHIEP GAN DAY NHAT          ");
    192.             printf("\n+========+=========================+=========================+======+=========+");
    193.             printf("\n|   Ma   |          Ten            |          Ten            | Diem |   Nam   |");
    194.             printf("\n|  KLTN  |   Khoa luan tot nghiep  |   Sinh vien thuc hien   | TB   |Thuc hien|");
    195.             printf("\n+========+=========================+=========================+======+=========+");
    196.     for(i=p->next;i->next!=NULL;i=i->next)
    197.     {
    198.         max=i->info->Namth_KLTN;
    199.         imax=i;
    200.         for(i=i->next;q!=p->next;q=q->next)
    201.         {
    202.             if(max=i->info->Namth_KLTN < q->info->Namth_KLTN)
    203.             {
    204.                 max=q->info->Namth_KLTN;
    205.                 imax=q;
    206.             }
    207.             imax->info->Namth_KLTN = i->info->Namth_KLTN;
    208.             i->info->Namth_KLTN = max; 
    209.                 if(max=q->info->Namth_KLTN)
    210.                     printf("\n|%8s|%25s|%25s|%6.1f|%9d|"
    211.                         ,q->info->Ma_KLTN
    212.                         ,q->info->Ten_KLTN
    213.                         ,q->info->Hoten_SV
    214.                         ,q->info->info_diem->diem_tb
    215.                         ,q->info->Namth_KLTN);
    216.                     q=q->next;     
    217.         }
    218.     }
    219. }
    220. //Tim kltn co diem trung binh lon hon 9.0
    221. void search_dtb(List *L)
    222. {
    223.     node *p= L->phead ;
    224.     node *q= L->phead;
    225.     KLTN *diem_tam = p->info;
    226.     if(p==NULL)
    227.     {
    228.         printf("\nDanh sach rong!");
    229.     }
    230.     while(p!=NULL)
    231.     {
    232.         if(p->info->info_diem->diem_tb >9)
    233.             diem_tam=p->info;
    234.         p=p->next;
    235.     }
    236.             printf("\n        DANH SACH KHOA LUAN TOT NGHIEP CO DIEM TRUNG BINH LON HON 9.0          ");
    237.             printf("\n+========+=========================+=========================+======+=========+");
    238.             printf("\n|   Ma   |          Ten            |          Ten            | Diem |   Nam   |");
    239.             printf("\n|  KLTN  |   Khoa luan tot nghiep  |   Sinh vien thuc hien   | TB   |Thuc hien|");
    240.             printf("\n+========+=========================+=========================+======+=========+");
    241.     while(q!=NULL)
    242.     {
    243.         if(q->info->info_diem->diem_tb==diem_tam->info_diem->diem_tb)
    244.         printf("\n|%8s|%25s|%25s|%6.1f|%9d|"
    245.             ,q->info->Ma_KLTN
    246.             ,q->info->Ten_KLTN
    247.             ,q->info->Hoten_SV
    248.             ,q->info->info_diem->diem_tb
    249.             ,q->info->Namth_KLTN);
    250.             //printf("\n+--------+-------------------------+-------------------------+------+---------+");
    251.             q=q->next;
    252.     }
    253.     getch();
    254. }
    255. //Xuat danh sach khoa luan tot nghiep
    256. void xuat(List *L)
    257. {
    258.     node *p=L->phead;
    259.     if(L->phead==NULL)
    260.         printf("\nDanh sach rong!!!");
    261.     else
    262.     {
    263.             printf("\n                     DANH SACH KHOA LUAN TOT NGHIEP                            ");
    264.             printf("\n+========+=========================+=========================+======+=========+");
    265.             printf("\n|   Ma   |          Ten            |          Ten            | Diem |    Nam  |");
    266.             printf("\n|  KLTN  |   Khoa luan tot nghiep  |   Sinh vien thuc hien   | TB   |Thuc hien|");
    267.             printf("\n+========+=========================+=========================+======+=========+");
    268.         while(p!=NULL)
    269.         {
    270.             printf("\n|%8s|%25s|%25s|%6.1f|%9d|"
    271.                 ,p->info->Ma_KLTN
    272.                 ,p->info->Ten_KLTN
    273.                 ,p->info->Hoten_SV
    274.                 ,p->info->info_diem->diem_tb
    275.                 ,p->info->Namth_KLTN);
    276.             printf("\n+--------+-------------------------+-------------------------+------+---------+");
    277.             p=p->next;
    278.         }
    279.     }getch();
    280. }
    281.  
    282.  
    283.  
    284.  
    285. //Ham main
    286. void main()
    287. {
    288.     List L;
    289.     int chucnang;
    290.   do
    291.   {
    292.       printf("\n\n\n          CHUONG TRINH KHOA LUAN TOT NGHIEP      ");
    293.       printf("\n        +===========================================+");
    294.       printf("\n        |   [1]  Khoi tao list moi                  |");
    295.       printf("\n        |   [2]  Nhap du lieu                       |");
    296.       printf("\n        |   [3]  In danh sach khoa luan tot nghiep  |");
    297.       printf("\n        |   [4]  Tim khoa luan co diem TB lon hon 9 |");
    298.       printf("\n        |   [5]  Tim nam co nhieu khoa luan nhat    |");
    299.       printf("\n        |   [6]  Tim 5 khoa luan thuc hien gan nhat |");
    300.       printf("\n        |   [0]  Thoat khoi chuong trinh            |");
    301.       printf("\n        +===========================================+");
    302.       printf("\n");
    303.       printf("\n    Ban hay chon mot tuy chon ung voi mot so tu 0 den 5:");
    304.       scanf("%d",&chucnang);
    305.       switch (chucnang)
    306.       {
    307.             case 1 : makenull_list(L);
    308.                         break;
    309.             case 2 : nhap(L);
    310.                         break;
    311.             case 3 : xuat(&L);
    312.                         break; 
    313.             case 4 : search_dtb(&L);
    314.                         break;
    315.             case 5 :  search_nam(&L);
    316.                         break;
    317.          /* case 6 :  
    318.                         break;
    319.             */
    320.       }
    321.     } while (chucnang != 0);  
    322. }
    pro nào có thể giúp mình kiểm tra hàm search_nam không mình muốn xuất 5 KLTN có năm gần nhất.
    Cho mình hỏi là để tìm năm có nhiều khóa luận tốt nghiếp nhất thì phải làm sao.
    thank nhiều.!!!!!!!!!!!!!
    Đã được chỉnh sửa lần cuối bởi kitti : 10-11-2011 lúc 03:37 PM. Lý do: đưa code vào tag code

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

  1. Bài tập C++ Tìm năm có nhiều khóa luận nhất trong danh sách liên kết
    Gửi bởi truonglong99 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 13-11-2011, 10:47 AM
  2. Bài tập C++ Nhập xuất danh sách liên kết với lập trình C++, lúc nào cũng ra danh sách rỗng?
    Gửi bởi Le thi Ngoc Lan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 24-01-2011, 12:37 PM
  3. Nhập xuất danh sách bằng Danh Sách Liên Kết như thế nào?
    Gửi bởi hvcuongit 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: 10-12-2010, 10:16 AM
  4. Hàm nhập xuất trong danh sách liên kết đơn C++
    Gửi bởi judoka 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: 05-11-2010, 12:37 PM
  5. Bài tập C++ nhập và xuất trong danh sách liên kết đơn trong C?
    Gửi bởi judoka 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: 05-11-2010, 08:36 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