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

Đề tài: Tìm năm có nhiều khóa luậ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

    Angry Tìm năm có nhiều khóa luậ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. int search_nam(List *L)
    166. {
    167.     int dem=0;
    168.     node *p,*q;
    169.     p=L->phead;
    170.     KLTN *nam;
    171.     for(p=L->phead; p!=NULL; p=p->next)
    172.         for(q=p->next; q!=NULL; q=q->next)
    173.         {
    174.             if(p->info->Namth_KLTN == q->info->Namth_KLTN)
    175.                 dem++;
    176.         }
    177.     int max = 0;
    178.     for(p=L->phead; p!=NULL; p=p->next)
    179.         for(q=p->next; q!=NULL; q=q->next)
    180.         {
    181.             if(dem > max)
    182.                 max = dem;
    183.         }
    184.         return p->info->Namth_KLTN;
    185. }
    186.  
    187. void xuat(List *L)
    188. {
    189.     node *p=L->phead;
    190.     if(L->phead==NULL)
    191.         printf("\nDanh sach rong!!!");
    192.     else
    193.     {
    194.             printf("\n+========+=========================+=========================+======+=========+");
    195.             printf("\n|   Ma   |          Ten            |          Ten            | Diem |    Nam  |");
    196.             printf("\n|  KLTN  |   Khoa luan tot nghiep  |   Sinh vien thuc hien   | TB   |Thuc hien|");
    197.             printf("\n+========+=========================+=========================+======+=========+");
    198.         while(p!=NULL)
    199.         {
    200.             printf("\n|%8s|%25s|%25s|%6.1f|%9d|"
    201.                 ,p->info->Ma_KLTN
    202.                 ,p->info->Ten_KLTN
    203.                 ,p->info->Hoten_SV
    204.                 ,p->info->info_diem->diem_tb
    205.                 ,p->info->Namth_KLTN);
    206.             printf("\n+--------+-------------------------+-------------------------+------+---------+");
    207.             p=p->next;
    208.         }
    209.     }getch();
    210. }
    211.  
    212.  
    213.  
    214.  
    215. //Ham main
    216. void main()
    217. {
    218.     List L;
    219.     int chucnang;
    220.   do
    221.   {
    222.       //clrscr();
    223.       printf("\n\n *** NHOM THUC HIEN DO AN  ***");
    224.       printf("\n  +================================+");
    225.       printf("\n  |     Nguyen Hoang Giang         |");
    226.       printf("\n  |     Ho Huu Hanh                |");
    227.       printf("\n  |     Truong Duc Long            |");
    228.       printf("\n  |     Vo Minh Tu                 |");
    229.       printf("\n  +================================+");
    230.  
    231.       printf("\n\n\n          CHUONG TRINH KHOA LUAN TOT NGHIEP      ");
    232.       printf("\n        +===========================================+");
    233.       printf("\n        |   [1]  Khoi tao list moi                  |");
    234.       printf("\n        |   [2]  Nhap du lieu                       |");
    235.       printf("\n        |   [3]  In danh sach khoa luan tot nghiep  |");
    236.       printf("\n        |   [4]  Tim khoa luan co diem TB lon hon 9 |");
    237.       printf("\n        |   [5]  Tim nam co nhieu khoa luan nhat    |");
    238.       printf("\n        |   [6]  Tim 5 khoa luan thuc hien gan nhat |");
    239.       printf("\n        |   [0]  Thoat khoi chuong trinh            |");
    240.       printf("\n        +===========================================+");
    241.       printf("\n");
    242.       printf("\n    Ban hay chon mot tuy chon ung voi mot so tu 0 den 5:");
    243.       scanf("%d",&chucnang);
    244.       switch (chucnang)
    245.       {
    246.             case 1 :makenull_list(L);
    247.                         break;
    248.             case 2 :nhap(L);
    249.                         break;
    250.             case 3 :printf("\n                     DANH SACH KHOA LUAN TOT NGHIEP ");
    251.                     xuat(&L);
    252.                         break; 
    253.             case 4 :search_dtb(&L);
    254.                     printf("\n                     DANH SACH KHOA LUAN TOT NGHIEP CO DIEM TRUNG BINH >9.0");
    255.                     xuat(&L);
    256.                         break;
    257.             case 6 :sort_nam(&L);
    258.                     printf("\n        DANH SACH 5 KHOA LUAN TOT NGHIEP GAN DAY NHAT  ");
    259.                     xuat(&L);
    260.                         break;
    261.             case 5 :printf("\nNam co nhieu khoa luan tot nghiep nhat la: %d",solan_nam(&L));
    262.                         break;
    263.            
    264.       }
    265.     } while (chucnang != 0);  
    266. }

    Mấy pro nào có thể giúp em xem phần search_nam(List *L); em viết như vậy mà không thế in ra được năm có nhiều khóa luận nhất. Làm sao để in ra được? Thank nhiều!!!!!!!!!!!!!
    Đã được chỉnh sửa lần cuối bởi kitti : 11-11-2011 lúc 05:00 PM. Lý do: đưa code vào tag code

  2. #2
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    bạn có quản lý được là lúc node p trả về thì node p đang là node nào không, khi thực hiện hết 2 vòng for thì node p đã NULL rồi
    HT117-5277

  3. #3
    Ngày gia nhập
    12 2010
    Bài viết
    1

    tạo 1 p là = head
    max=p.data.sokhoaluan;
    chạy while(p.next!=null)
    nếu p.data>max thì max=p.data
    else p=p.next
    Mình nói sơ cua cái hướng là như thế mình cũng chưa đọc code của bạn,nếu p.data không phải là khóa luận thì p.data.sokhoaluan

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

    ak minh nhận ra rồi. Mà sao treamaster không cho mình cách thức làm luôn không

  5. #5
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    Trích dẫn Nguyên bản được gửi bởi truonglong99 Xem bài viết
    ak minh nhận ra rồi. Mà sao treamaster không cho mình cách thức làm luôn không
    vì năm là kiểu dữ liệu int như trên bạn nói.bạn chỉ cần lưu lại năm đó trong một biến gì đó rồi return lại giá trị của biến đó thôi.ko cần phải làm rắc rối dậy đâu.
    HT117-5277

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

  1. Mã nguồn C Lỗi xóa node trong danh sách liên kết đơn. Giúp mình với, cám ơn nhiều !!!
    Gửi bởi shizuoka trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 09-09-2012, 09:02 PM
  2. Bài tập C++ Lỗi ở hàm xuất 5 năm gầ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: 0
    Bài viết cuối: 10-11-2011, 03:11 PM
  3. Thảo luận về Danh sách liên kết
    Gửi bởi while trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 22-09-2010, 01:22 AM
  4. xóa 1 phần tử có khóa k trong danh sách liên kết đơn
    Gửi bởi longhcmus 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: 23-04-2010, 09:39 AM
  5. Bàn luận về việc cấp phát bộ nhớ động trong danh sách liên kết
    Gửi bởi valiant-man trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 03-01-2008, 02:57 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