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

Đề tài: Bài toán nhấp danh sách học viên

  1. #1
    Ngày gia nhập
    03 2008
    Nơi ở
    Nhà tù
    Bài viết
    37

    Mặc định Bài toán nhấp danh sách học viên

    Đây là bài toán nhập danh sách học viện và in ra
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <string.h>
    4.  
    5. typedef struct
    6. {
    7.     int ngay,thang,nam;
    8. }date;
    9.  
    10. typedef struct
    11. {
    12.     char ht[30];
    13.      date ns;
    14.     float bl;
    15. }person;
    16.  
    17. void hv(person *p1,person *p2);
    18. void sapxep(person *p,int n);
    19. void vao(person *p);
    20. void in(person p);
    21.  
    22.  void hv(person *p1,person *p2)
    23.   {
    24.        person h;
    25.        h=*p1;
    26.        *p1=*p2;
    27.        *p2=h;
    28.   }
    29.  
    30.  void vao(person *p,int n)
    31.    {
    32.     person h[50];
    33.     float bl[50];
    34.     int i;
    35.        for(i=1;i<=n;i++)
    36.         {
    37.          printf("\nHo ten:");
    38.         gets(h[i].ht);
    39.         printf("\nNgay thang nam sinh:");
    40.         scanf("%d%d%d%*c",&h[i].ns.ngay,&h[i].ns.thang,&h[i].ns.nam);
    41.         printf("\nBac luong:");
    42.         scanf("%f%*c",&bl[i]);
    43.         h[i].bl=bl[i];
    44.         *p=h[i];
    45.         }
    46.     }
    47.  
    48.     void in(person p)
    49.      {
    50.          printf("\nHo ten:%s\nSinh ngay:%d\n Thang:%d\n Nam:%d\n Bac luong:%0.1f",p.ht,p.ns.ngay,p.ns.thang,p.ns.nam,p.bl);
    51.      }
    52.  
    53.     void sapxep(person *p,int n)
    54.      {
    55.            int i,j;
    56.            for(i=1;i<=n-1;i++)
    57.          for(j=i+1;j<=n;j++)
    58.            if(p[i].ns.nam)
    59.             hv(&p[i],&p[j]);
    60.      }
    61.  
    62.      //ham chinh
    63.      main()
    64.      {
    65.          person ds[100];
    66.          int n,j,i;
    67.          char ht[400];
    68.           //Vao so lieu
    69.            printf("\nSo nguoi:");
    70.            scanf("%d%*c",&n);
    71.  
    72.         vao(ds,n);
    73.  
    74.           //Sap xep theo chieu tang cua nam sinh
    75.            sapxep(ds,n);
    76.  
    77.             //In danh sach sau khi sap xep
    78.              for(i=1;i<=n;i++)
    79.               in(ds[i]);
    80.         getch();
    81.      }
    Bài này mình sai chỗ nào vậy các bạn ?

  2. #2
    Ngày gia nhập
    04 2008
    Nơi ở
    HCMC
    Bài viết
    251

    bài này sai ở nhiều chỗ. máy báo tận 102 lỗi lận.
    Bạn nên vừa code vừa kiểm tra lỗi luôn chứ đừng đánh xong rồi mới thấy 1 loạt lỗi. Rồi chán chẳng bit làm thế nào nữa. Bấm F4 để fix lỗi dần. Fix 1 lần là nhớ mãi
    C++ Code:
    1. for(;;){cout<<"Busy"<<endl;}
    2. system("cls");
    Hãy ủng hộ cho quỹ phát triển cộng đồng C Việt
    http://congdongcviet.com/quyphattrien-congdongcviet.cpp

  3. #3
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Bài này đâu sai lỗi cú pháp chứ thienthan dịch bằng Dev-C++ hay Borland C đều ngon . Mình chỉ sửa chỗ sai chính của bạn để chương trình chạy được thôi nghen . Hàm vao() của bạn viết có vấn đề nên không vào dữ liệu được .
    C Code:
    1.         *p=h[i]; // Chỗ này bạn gán kiểu này tức là p[0]=h[i] --> chỉ nhập được p[0]
    Cho nên mảng ds của bạn chỉ có phần tử ds[0] là có giá trị --> khi in bạn lại in từ ds[1] --> in ra toàn kí tự lạ .
    C Code:
    1. void vao(person *p,int n)
    2. {
    3.     person h[50];
    4.     float bl[50];
    5.     int i;
    6.     for(i=1;i<=n;i++)
    7.     {
    8.          printf("\nHo ten:");
    9.          gets(h[i].ht);
    10.          printf("\nNgay thang nam sinh:");
    11.          scanf("%d%d%d%*c",&h[i].ns.ngay,&h[i].ns.thang,&h[i].ns.nam);
    12.          printf("\nBac luong:");
    13.          scanf("%f%*c",&bl[i]);
    14.          h[i].bl=bl[i];
    15.          p[i]=h[i];//Thế này là được
    16.     }
    17. }
    Bạn dùng mảng h là quá thừa đọc trực tiếp vào p[i] là được . Mình nghĩ xài hai mảng h và bl là hơi lãng phí .
    I'm superman

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

  1. Nhập Danh sách sinh viên, sắp xếp theo điểm của SV và in danh sách.
    Gửi bởi ltqqn93 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 6
    Bài viết cuối: 15-04-2013, 08:38 PM
  2. Mảng trên C Nhập vào danh sách sinh viên
    Gửi bởi nmt93 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 28-02-2012, 11:52 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. Nhập danh sách sinh viên, dừng lại khi nhập khoảng trắng???
    Gửi bởi ninomaxx trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 03-01-2010, 08:08 AM
  5. Danh sách liên kết, code nhập danh sách sinh viên có lỗi làm sao sửa?
    Gửi bởi acmilan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 10-04-2009, 08:24 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