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

Đề tài: Bài toán Tính lương trung bình cho mỗi lứa tuổi

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    45

    Mặc định Bài toán Tính lương trung bình cho mỗi lứa tuổi

    Mình có bài thế này: "Nhập từ bàn phím tuổi và thu nhâp của N người (2 mảng 1 chiều). TÍnh thu nhập trung bình của mỗi lứa tuổi.". Mình đã làm nhưng ko chạy dc, các bạn có thể giúp mình soát lỗi hoặc làm 1 lời giải khác đơn giản hơn ko?
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    void main()
    {
    int i,n,t[99],c23,c30,c40,c50,c60,c100;float l[99],ltb23,luong23,ltb30,luong30,ltb40,luong40,ltb50,l uong50,ltb60,luong60,ltb100,luong100;
    clrscr();
    printf("\n So nguoi n=");scanf("%d%*c",&n);
    for (i=1;i<=n;i++) {
    printf("\n Nhap so lieu cua nguoi thu %d:",i);
    printf("\n luong:");scanf("%f%*c",&l[i]);
    printf("\n tuoi :");scanf("%d%*c",&t[i]);
    }
    ltb23=luong23=ltb30=luong30=ltb40=luong40=ltb50=lu ong50=ltb60=luong60=ltb100=luong100=c23=c30=c40=c5 0=c60=c100=0;
    for (i=1;i<=n;i++) {
    if (t[i]<=23) {luong23=luong23+l[i]; c23=c23++;}
    if (t[i]>23 && t[i]<=30) {luong30=luong30+l[i]; c30=c30++;};
    if (t[i]>30 && t[i]<=40) {luong40=luong40+l[i]; c40=c40++;};
    if (t[i]>40 && t[i]<=50) {luong50=luong50+l[i]; c50=c50++;};
    if (t[i]>50 && t[i]<=60) {luong60=luong60+l[i]; c60=c60++;};
    if (t[i]>60) {luong100=luong100+l[i]; c100=c100++;};
    }
    ltb23=luong23/c23;
    ltb30=luong30/c30;
    ltb40=luong40/c40;
    ltb50=luong50/c50;
    ltb60=luong60/c60;
    ltb100=luong100/c100;
    printf("\n Luong trung binh cua cac lua tuoi:");
    printf("\n Tu 23 tuoi tro xuong la:%f",ltb23);
    printf("\n Tu 23 den 30 tuoi la:%f",ltb30);
    printf("\n Tu 30 den 40 tuoi la:%f",ltb40);
    printf("\n Tu 40 den 50 tuoi la:%f",ltb50);
    printf("\n Tu 50 den 60 tuoi la:%f",ltb60);
    printf("\n Tu ngoai 60 tuoi la:%f",ltb100);
    getch();
    }
    Thanks nhìu.

  2. #2
    Ngày gia nhập
    01 2009
    Bài viết
    165

    Trích dẫn Nguyên bản được gửi bởi Mingyu Xem bài viết
    Mình có bài thế này: "Nhập từ bàn phím tuổi và thu nhâp của N người (2 mảng 1 chiều). TÍnh thu nhập trung bình của mỗi lứa tuổi.". Mình đã làm nhưng ko chạy dc, các bạn có thể giúp mình soát lỗi hoặc làm 1 lời giải khác đơn giản hơn ko?

    Thanks nhìu.
    BAN THU CACH NAY XEM:
    struct Nguoi
    {int tuoi;int thunhap};
    typedef struct Nguoi nguoi;
    void nhap(nguoi a)
    {printf("nhap tuoi:");scanf("%d",&nguoi.tuoi);
    printf("nhap thu nhap:");scanf("%d",&nguoi.thunhap);}
    void nhapNnguoi(nguoi a[],int n)
    {printf("nhap so nguoi:");scanf("%d",&n);
    for(int i=0;i<n;i++)
    nhap(a[i]);
    }
    void main()
    {int n;nguoi a[100];
    nhapNnguoi(a,n);
    int t23,t30,t40,t50,d23,d30,d40,d50;
    for(int i=0;i<n;i++)
    {
    if(a[i].tuoi<23)
    {t23+=a[i].thunhap;
    d23+=1;
    }
    if(a[i].tuoi>=23&&a[i].tuoi<30)
    {t30+=a[i].thunhap;d30+=1;}
    if(a[i].tuoi>=30&&<40)
    {t40+=a[i].thunhap;d40+=1}
    if(a[i].tuoi>=40&&a[i].tuoi<50)
    {t50+=a[i].thunhap;d50+=1}
    }
    int t23/=d23;t30/=d30;t40/=d40;t50/=d50;
    printf("thu nhap trung binh do tuoi 23:%d",t23);
    printf("thu nhap lua tuoi 30:%d",t30);
    printf("thu nhap lua tuoi 40:%d",t40);
    printf("thu nhap lua tuoi 50:%d",t50);
    }

  3. #3
    Ngày gia nhập
    03 2009
    Bài viết
    45

    Mình mới học đến mảng 2 chiều thui mà. Mình ko hiểu mấy dòng đầu lắm. Thông cảm giúp

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

    Tại sao bạn lại viết : scanf("%d%*c",&...),bạn thử viết bỏ cái "%*c" đi xem sao?Còn chỗ ltb23=luo23ng=...=0 giả sử trong mảng ko có ai 23 tuổi thì c23=0 ,ltb=luo23ng/c23 ko tính được nên máy sẽ báo lỗi cũng tương tự như vậy với các biến khác bạn có thể sửa lại bằng cách thêm điều kiện cho phép chia đó,còn các dòng c23=c23++,c30=c30++,... có nghĩa là gì ? Bạn thử viết lại là c23=c23+1 xem sao,với lại bạn ko cần khai báo thêm các biến ltb23,ltb30,...,bạn có thể sử dụng lại các biến luong23,luong30,... bằng cách viết :luong23=luong23/c23.Các dòng còn lại mình ko có ý kiến gì.

  5. #5
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Cả 2 bạn xem lại cách trình bày bài viết trên diễn đàn, cả hai code đều không ổn.

    Mình cũng chẳng có thuật toán nào hay hơn cả, chủ yếu tham khảo về ki thuật lập trình thôi.
    C Code:
    1. #include<stdio.h>
    2. /*
    3. */
    4. void InputInfo(unsigned short int tuoi[],double luong[], int n);
    5. void CalcAverage(unsigned short int tuoi[],double luong[], int n);
    6.  
    7. int main()
    8. {
    9.     unsigned short int tuoi[20];
    10.     double luong[20];
    11.     int n=3;
    12.     InputInfo(tuoi,luong,n);
    13.     CalcAverage(tuoi,luong,n);
    14.     return 0;
    15. }
    16.  
    17. void InputInfo(unsigned short int tuoi[],double luong[], int n)
    18. {
    19.     int i;
    20.     for (i=0; i<n; i++)
    21.     {
    22.         printf(" * Nguoi thu %d: \n",i+1);
    23.         printf("Nhap tuoi: ");scanf("%d",&tuoi[i]);
    24.         printf("Nhap luong: ");scanf("%lf",&luong[i]);
    25.     }
    26. }
    27.  
    28. void CalcAverage(unsigned short int tuoi[],double luong[], int n)
    29. {
    30.     double aver[6] = {0};
    31.     int count[6] = {0},i;
    32.     for (i=0; i<n; i++)
    33.     {
    34.         if (tuoi[i]<23) {count[0]++; aver[0] += luong[i];}
    35.         else if (tuoi[i]<30) {count[1]++; aver[1] += luong[i];}
    36.         else if (tuoi[i]<40) {count[2]++; aver[2] += luong[i];}
    37.         else if (tuoi[i]<50) {count[3]++; aver[3] += luong[i];}
    38.         else if (tuoi[i]<60) {count[4]++; aver[4] += luong[i];}
    39.         else if (tuoi[i]<100) {count[5]++; aver[5] += luong[i];}
    40.     }
    41.  
    42.     if (count[0]) printf("\n - Trung binh nguoi nguoi < 23 tuoi la: %lf",aver[0]/count[0]);
    43.     if (count[1]) printf("\n - Trung binh nguoi nguoi < 30 tuoi la: %lf",aver[1]/count[1]);
    44.     if (count[2]) printf("\n - Trung binh nguoi nguoi < 40 tuoi la: %lf",aver[2]/count[2]);
    45.     if (count[3]) printf("\n - Trung binh nguoi nguoi < 50 tuoi la: %lf",aver[3]/count[3]);
    46.     if (count[4]) printf("\n - Trung binh nguoi nguoi < 60 tuoi la: %lf",aver[4]/count[4]);
    47.     if (count[5]) printf("\n - Trung binh nguoi nguoi < 100 tuoi la: %lf",aver[5]/count[5]);
    48. }

  6. #6
    Ngày gia nhập
    01 2009
    Bài viết
    165

    Mặc định Bài toán Tính lương trung bình cho mỗi lứa tuổi

    Trích dẫn Nguyên bản được gửi bởi QuangHoang Xem bài viết
    Cả 2 bạn xem lại cách trình bày bài viết trên diễn đàn, cả hai code đều không ổn.

    Mình cũng chẳng có thuật toán nào hay hơn cả, chủ yếu tham khảo về ki thuật lập trình thôi.
    C Code:
    1. #include<stdio.h>
    2. /*
    3. */
    4. void InputInfo(unsigned short int tuoi[],double luong[], int n);
    5. void CalcAverage(unsigned short int tuoi[],double luong[], int n);
    6.  
    7. int main()
    8. {
    9.     unsigned short int tuoi[20];
    10.     double luong[20];
    11.     int n=3;
    12.     InputInfo(tuoi,luong,n);
    13.     CalcAverage(tuoi,luong,n);
    14.     return 0;
    15. }
    16.  
    17. void InputInfo(unsigned short int tuoi[],double luong[], int n)
    18. {
    19.     int i;
    20.     for (i=0; i<n; i++)
    21.     {
    22.         printf(" * Nguoi thu %d: \n",i+1);
    23.         printf("Nhap tuoi: ");scanf("%d",&tuoi[i]);
    24.         printf("Nhap luong: ");scanf("%lf",&luong[i]);
    25.     }
    26. }
    27.  
    28. void CalcAverage(unsigned short int tuoi[],double luong[], int n)
    29. {
    30.     double aver[6] = {0};
    31.     int count[6] = {0},i;
    32.     for (i=0; i<n; i++)
    33.     {
    34.         if (tuoi[i]<23) {count[0]++; aver[0] += luong[i];}
    35.         else if (tuoi[i]<30) {count[1]++; aver[1] += luong[i];}
    36.         else if (tuoi[i]<40) {count[2]++; aver[2] += luong[i];}
    37.         else if (tuoi[i]<50) {count[3]++; aver[3] += luong[i];}
    38.         else if (tuoi[i]<60) {count[4]++; aver[4] += luong[i];}
    39.         else if (tuoi[i]<100) {count[5]++; aver[5] += luong[i];}
    40.     }
    41.  
    42.     if (count[0]) printf("\n - Trung binh nguoi nguoi < 23 tuoi la: %lf",aver[0]/count[0]);
    43.     if (count[1]) printf("\n - Trung binh nguoi nguoi < 30 tuoi la: %lf",aver[1]/count[1]);
    44.     if (count[2]) printf("\n - Trung binh nguoi nguoi < 40 tuoi la: %lf",aver[2]/count[2]);
    45.     if (count[3]) printf("\n - Trung binh nguoi nguoi < 50 tuoi la: %lf",aver[3]/count[3]);
    46.     if (count[4]) printf("\n - Trung binh nguoi nguoi < 60 tuoi la: %lf",aver[4]/count[4]);
    47.     if (count[5]) printf("\n - Trung binh nguoi nguoi < 100 tuoi la: %lf",aver[5]/count[5]);
    48. }
    bạn cho mình hỏi tại sao phải khai báo mảng tuổi là unsign short int?

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