Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    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
    Mã:
    #include <stdio.h>#include <conio.h>#include <string.h> typedef struct{    int ngay,thang,nam;}date; typedef struct{    char ht[30];     date ns;    float bl;}person; void hv(person *p1,person *p2);void sapxep(person *p,int n);void vao(person *p);void in(person p);  void hv(person *p1,person *p2)  {       person h;       h=*p1;       *p1=*p2;       *p2=h;  }  void vao(person *p,int n)   {    person h[50];    float bl[50];    int i;       for(i=1;i<=n;i++)        {         printf("
    Ho ten:");        gets(h[i].ht);        printf("
    Ngay thang nam sinh:");        scanf("%d%d%d%*c",&h[i].ns.ngay,&h[i].ns.thang,&h[i].ns.nam);        printf("
    Bac luong:");        scanf("%f%*c",&bl[i]);        h[i].bl=bl[i];        *p=h[i];        }    }     void in(person p)     {         printf("
    Ho ten:%s
    Sinh ngay:%d
     Thang:%d
     Nam:%d
     Bac luong:%0.1f",p.ht,p.ns.ngay,p.ns.thang,p.ns.nam,p.bl);     }     void sapxep(person *p,int n)     {           int i,j;           for(i=1;i<=n-1;i++)         for(j=i+1;j<=n;j++)           if(p[i].ns.nam)            hv(&p[i],&p[j]);     }      //ham chinh     main()     {         person ds[100];         int n,j,i;         char ht[400];          //Vao so lieu           printf("
    So nguoi:");           scanf("%d%*c",&n);         vao(ds,n);           //Sap xep theo chieu tang cua nam sinh           sapxep(ds,n);             //In danh sach sau khi sap xep             for(i=1;i<=n;i++)              in(ds[i]);        getch();     }
    Bài này mình sai chỗ nào vậy các bạn ?

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    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[IMG]images/smilies/biggrin.png[/IMG]

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    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 .

    Mã:
            *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ạ .

    Mã:
    void vao(person *p,int n){    person h[50];    float bl[50];    int i;    for(i=1;i<=n;i++)    {         printf("
    Ho ten:");         gets(h[i].ht);         printf("
    Ngay thang nam sinh:");         scanf("%d%d%d%*c",&h[i].ns.ngay,&h[i].ns.thang,&h[i].ns.nam);         printf("
    Bac luong:");         scanf("%f%*c",&bl[i]);         h[i].bl=bl[i];         p[i]=h[i];//Thế này là được    }}
    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í .

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •