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

Đề tài: Khởi tạo danh sách sinh viên

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

    Unhappy Khởi tạo danh sách sinh viên

    Đề bài yêu cầu
    typedef struct
    {char masv[10], hoten[30];
    float toan; (1)
    float ly;
    float hoa;
    float dtb;
    } NhanSu;

    Hãy khai báo một mảng a (tĩnh hoặc động) có kiểu dữ liệu là NhanSu để lưu danh sách các sinh viên của cơ quan. Mảng có cỡ cực đại là nmax được định nghĩa trước trong phần các chỉ thị tiền xử lý (sử dụng lệnh #define...). Biến nguyên count chỉ số người trong danh sách. Ban đầu count = 0, tức là danh sách còn rỗng.

    khi khởi tạo danh sách nếu là mảng tĩnh thì ta chỉ cần đặt lại count=0 để chỉ ra rằng danh sách rỗng, không có phần tử nào. Nếu là mảng động thì ta xóa vùng bộ nhớ đã cấp phát, sau đó cấp phát lại và đặt count=0.

    Có ai biết về khởi tạo danh sách thì nói dùm mình là như thế nào với. Mình ko viết code.

  2. #2
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Hờ chả hiểu đề lắm :p chắc tại mình ngu quá T__T.Còn về đề bài của bạn thì theo mình là cái define ấy với giá trị max thì chịu rồi làm sao biết nó bao nhiêu là định nghĩa trước được, chúng ta có thể làm nó max bằng cách là khởi tạo con trỏ mảng NhanSu thôi.Theo mình hiểu thì là như thế.Khi khởi tạo danh sách thì ta đặt count = 0 thôi.Chả có gì cả???
    Câu hỏi : Bạn không biết viết code à?
    ttecak ?

  3. #3
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Sử dụng biến static với count. Trong hàm khởi tạo chỉ việc count++ là ok đếm được số nhân sự. (Cái này sử dụng ở lớp là hay)
    Nhưng việc tính được max là bao nhiêu thì ko nên dùng mảng, dùng con trỏ hay hơn. (count lúc này không có tác dụng gì)
    Bạn thử code đi, anh em giúp gì được sẽ giúp, biết đâu lại học hỏi từ bạn rất nhiều.
    Không biết ghi gì luôn ...

  4. #4
    Ngày gia nhập
    03 2008
    Bài viết
    8

    theo mình thì bạn nên code đi nhé:
    -trong trường hợp mảng tĩnh dồng nghĩa với việc bài toán là 1 mảng với thành phần mảng[i] là kiểu struct đã khai báo.Nhược diểm rất lớn của trường hợp này là lãng phí bộ nhớ..
    -trong trường hợp mảng động,tốt nhất là bạn nên khai báo theo kiểu stack


    Bạn hãy code bài của bạn lên anh em còn tham khảo.......
    ....!!!!!!

  5. #5
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    531

    Trích dẫn Nguyên bản được gửi bởi ga con Xem bài viết
    Có ai biết về khởi tạo danh sách thì nói dùm mình là như thế nào với. Mình ko viết code.
    Câu trả lời cho câu hỏi của bạn đã có trong đề bài rồi:
    Trích dẫn Nguyên bản được gửi bởi ga con Xem bài viết
    khi khởi tạo danh sách nếu là mảng tĩnh thì ta chỉ cần đặt lại count=0 để chỉ ra rằng danh sách rỗng, không có phần tử nào. Nếu là mảng động thì ta xóa vùng bộ nhớ đã cấp phát, sau đó cấp phát lại và đặt count=0.
    Vì đề bài cho biết số phần tử tối đa là hằng đã biết, được cho bằng chỉ thị tiền xử lý #define, bạn có thể dùng mảng tĩnh.

    Code:
    #define nmax 1000
    NhanSu danhsach[nmax];
    static int count = 0;

  6. #6
    Ngày gia nhập
    04 2008
    Bài viết
    4

    Post bài đó mình mới viết nộp cho thầy đó!thấy giông yêu cầu của bạn tham khảo đi

    C Code:
    1. #include <stdio.h>
    2. #include <string.h>
    3. #include <conio.h>
    4. #include <stdlib.h>
    5. #define NULL 0
    6.  
    7. typedef struct
    8. {
    9.     char masv[8];
    10.     char ten[30];
    11.     float dtb;
    12. } SV;
    13.  
    14.  
    15. typedef struct
    16. {
    17.     int n;
    18.     SV *e;
    19.     unsigned max;
    20. } SV_List;
    21.  
    22.  
    23. //-------------------------------------------------------
    24. // Xay dung ham khoi tao.
    25. void KhoiTao(SV_List &dssv)
    26. {
    27.     dssv.n=0;
    28.     dssv.max=64;
    29.     dssv.e= (SV*)calloc(sizeof(SV),dssv.max);
    30.     FILE* f=fopen("sinhvien.txt","w");
    31.     fclose(f);
    32. }
    33.  
    34. //-------------------------------------------------------
    35. // Xay dung ham nhap mot sinh vien.
    36. void Nhap1SV(SV &x)
    37. {
    38.    
    39.     {
    40.             printf(" Ma so : ");
    41.             fflush(stdin);
    42.             gets(x.masv);
    43.             if(strcmp(x.masv," ")!=0)
    44.             {
    45.                 printf(" Ten : ");
    46.                 fflush(stdin);
    47.                 gets(x.ten);
    48.                 printf("Diem trung binh : ");
    49.                 float f;
    50.                 scanf("%f",&f);
    51.                 x.dtb=f;
    52.             }
    53.     }
    54. }
    55.  
    56. //-------------------------------------------------------
    57. // Xay dung ham them mot sinh vien.
    58. void Them(SV x,SV_List &ds)
    59. {
    60.     FILE* f;
    61.     f=fopen("sinhvien.txt","a");
    62.     if(f!=NULL)
    63.     {
    64.      fprintf(f,"%-30s%-10s%-3.2f\n",x.ten,x.masv,x.dtb);
    65.     }
    66.     fclose(f);
    67.     ds.e[ds.n++]=x;
    68.     printf("\nbam phim bat ky de tiep tuc");
    69.     getch();
    70. }
    71.  
    72. //-------------------------------------------------------
    73. //Xay dung ham tim kiem hoc sinh bat ky trong danh sach
    74. void Timkiem(SV_List dssv)
    75. {
    76.  char ch[30];
    77.  int found=0;
    78.  printf("\nNhap ten sinh vien can tim:");
    79.  fflush(stdin);
    80.  gets(ch);
    81.  for(int i=0;i<dssv.n;i++)
    82.  {
    83.    if(strcmp(ch,dssv.e[i].ten)==0)
    84.    {
    85.     printf("Ho ten:%s\n",dssv.e[i].ten);
    86.     printf("MSSV:%s\n",dssv.e[i].masv);
    87.     printf("DTB:%f\n",dssv.e[i].dtb);
    88.     found=1;
    89.     }
    90.     }
    91. if(found==0) printf("\nKhong tim thay!");
    92. printf("\nbam phim bat ky de tiep tuc");
    93.     getch();
    94.  
    95. }
    96.  
    97.  
    98. //-------------------------------------------------------
    99.  
    100.  
    101. //Xay dung ham xoa mot sinh vien trong danh sach
    102. void XoaDS1(SV_List& dssv)
    103. {
    104.      char ch[30];
    105.      //int found=0;
    106.      printf("\nNhap ten sinh vien can xoa:");
    107.      fflush(stdin);
    108.      gets(ch);
    109.      for(int i=0;i<dssv.n;i++)
    110.      {
    111.        if(strcmp(ch,dssv.e[i].ten)==0)
    112.        {
    113.            // point cuat is i
    114.            for (int j = i; j < (dssv.n-1) ;j++)
    115.            {
    116.                 dssv.e[j] = dssv.e[j+1];
    117.            }
    118.            dssv.n--;
    119.        }
    120.        
    121.      
    122.       else
    123.         i++;
    124.     }
    125.  
    126. }
    127.  
    128. //-------------------------------------------------------
    129. // Xay dung ham xuat danh sach.
    130. void XuatDS(SV_List dssv)
    131. {
    132.     int i=0;
    133.     printf("\n%-6s%-30s%-10s%-10s","STT","HO TEN","MSSV","DIEM TB");
    134.     for(i=0;i<dssv.n;i++)
    135.     printf("\n%-6d%-30s%-10s%-10.2f",i+1,dssv.e[i].ten,dssv.e[i].masv,dssv.e[i].dtb);
    136.     printf("\nbam phim bat ky de tiep tuc");
    137.     getch();
    138. }
    139.  
    140. //-------------------------------------------------------
    141. //Sap xep danh sach theo diem trung binh
    142. void DSthutu(SV_List dssv)
    143. {
    144.   for(int i=0;i<dssv.n-1;i++)
    145.     for(int j=i+1;j<dssv.n;j++)
    146.     if(dssv.e[i].dtb < dssv.e[j].dtb)
    147.     {
    148.        SV temp;
    149.        temp=dssv.e[i];
    150.        dssv.e[i]=dssv.e[j];
    151.        dssv.e[j]=temp;
    152.     }
    153.   XuatDS(dssv);
    154. }
    155.  
    156.  
    157. //-------------------------------------------------------
    158. //Xem danh sach sv co san trong file
    159. void Xemfile()
    160. {
    161.  FILE* f;
    162.  printf("\n%-30s%-10s%-10s\n","HO TEN","MSSV","DIEM TB");
    163.  f=fopen("sinhvien.txt","r");
    164.  if(f!=NULL)
    165.    while(!feof(f))
    166.     {
    167.      printf("%c",fgetc(f));
    168.     }
    169.  fclose(f);
    170.  printf("\nbam phim bat ky de tiep tuc");
    171.  getch();
    172. }
    173. //-------------------------------------------------------
    174. // Chuong trinh chinh.
    175. void main()
    176. {
    177.    SV_List dssv;
    178.    int c;
    179.    KhoiTao(dssv);
    180.    while(1)
    181.    {
    182.        system("cls");
    183.        printf("1.Them 1 sinh vien\n");
    184.        printf("2.Xoa danh sach\n");
    185.        printf("3.Tim 1 sinh vien trong danh sach\n");
    186.        printf("4.Xem danh sach\n");
    187.        printf("5.Xem danh sach theo thu tu diem trung binh tu cao xuong thap\n");
    188.        printf("6.Xem danh sach tu file\n");
    189.        printf("7.Thoat\n");
    190.        printf("Bam chon:");
    191.        scanf("%d",&c);
    192.        while(c<1 || c>7)  {printf("Bam sai so\n"); fflush(stdin);
    193.        printf("\nBam chon:"); scanf("%d",&c);}
    194.        if(c==1)
    195.        {
    196.          SV x;
    197.          Nhap1SV(x);
    198.          Them(x,dssv);
    199.        }
    200.  
    201.        else if(c==2)
    202.          XoaDS1(dssv);
    203.        else if(c==3)
    204.            Timkiem(dssv);
    205.        else if(c==4)
    206.            XuatDS(dssv);
    207.        else if(c==5)
    208.            DSthutu(dssv);
    209.        else if(c==6)
    210.            Xemfile();
    211.        else break;
    212.    }
    213.    
    214.    
    215. }
    mình giờ bạn lắm sắp thi rồi nên không cò thời gian viết code cho bạn được hihihi

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

  1. Lập trình C++ Gặp lỗi lặp vô hạn khi xuất danh sách sinh viên trong code của bài danh sách sinh viên
    Gửi bởi boysieuda 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: 16-05-2013, 04:57 PM
  2. Tạo danh sách sinh viên trên C++. Chỉnh sửa, xóa sinh viên thì làm thế nào?
    Gửi bởi hiepsiao trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 3
    Bài viết cuối: 28-08-2011, 10:26 AM
  3. Quản lí sinh viên bằng stack dùng danh sách liên kết. Làm sao để nhập nhiều sinh viên?
    Gửi bởi hoainamken 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: 24-08-2011, 10:34 AM
  4. Bài tập quản lý sinh viên trong lập trình C#. Tìm kiếm sinh viên in ra cả danh sách?
    Gửi bởi anhduc12c5 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 24-08-2011, 08:32 AM
  5. Chương trình quản lí sinh viên viết trong visual c++ 2010. Lỗi không chạy khi in danh sách sinh viên theo năm
    Gửi bởi hikaru1015 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 9
    Bài viết cuối: 03-06-2011, 09:31 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