Cách in tổng trong bảng

chào mọi người! mình muốn in tổng tiền vào bảng mà không ra, mong mọi người hướng dẫn ạ.mình cảm ơn

#include<conio.h>
#include<string.h>
#include<math.h>
struct mathang
{
    char ma[10];
    char ten[30];
    int sl;
    char dv[20];
    float gianhap;
};
void nhap(struct mathang a[],int n)
{
    int i;
    for(i=1;i<=n;i++)
    {
        printf("\nnhap du lieu cho mat hang thu %d:",i);
        fflush(stdin);
        printf("\n ma hang:");
        gets(a[i].ma);
        printf("\n ten hang:");
        gets(a[i].ten);
        printf("\nso luong:");
        scanf("%d",&a[i].sl);
        fflush(stdin);
        printf("\ndon vi:");
        gets(a[i].dv);
        printf("\ngia nhap:");
        scanf("%f",&a[i].gianhap);

    }
}
void tongtiennhap(struct mathang a[],int n)
{int i;
float s=0;
for(i=1;i<=n;i++)
{
    s=s+a[i].sl*a[i].gianhap;
}
    printf("tong tien nhap la: %.2f",s);

}
void timmax(struct mathang a[],int n)
{
    int i;
    int x=1;
    for (i=2;i<=n;i++)
    {
        if(a[x].sl*a[x].gianhap<a[i].sl*a[i].gianhap)
           x=i;
    }
    printf("\ntien nhap caoo nhat:%.2f",a[x].sl*a[x].gianhap);
    printf("\nmat hang co tien nhap cao nhat la:%s",a[x].ten);


    int y=1;
    for (i=2;i<=n;i++)
    {
        if(a[y].sl*a[y].gianhap>a[i].sl*a[i].gianhap)
           y=i;
    }


    float t=a[x].sl*a[x].gianhap-a[y].sl*a[y].gianhap;
    printf("\nchenh lech cua tien nhap cao nhat va tien nhap thap nhat la:%.2f",t);
}
void xuat(struct mathang a[],int n)
{int i,s=0;
for (i=1;i<=n;i++)
{
    s=s+a[i].sl*a[i].gianhap;
}
    printf("\n\t\t\t BANG TONG KET TỈN NHAP HANG NAM 2018");
    printf("\n|ma hang|     ten hang     | tien nhap hang |");
    printf("\n---------------------------------------------");
    for(i=1;i<=n;i++)
    {printf("\n|%-7s|%-18s|%-16f|",a[i].ma,a[i].ten,a[i].sl*a[i].gianhap);
    printf("\n---------------------------------------------");}
    printf("\n|-------|       tong       |%-16f|",s);

}
main()
{
    int i,n;
    printf("nhap so mat hang:");
    scanf("%d",&n);
    struct mathang b[20];
    nhap(b,n);
    tongtiennhap(b,n);
    timmax(b,n);
    xuat(b,n);


}

int s = 0, số nguyên.
Khi định dạng xuất lại dùng %-16f cho số thực.
Nên xem lại!

2 Likes

bạn ơi có cách nào không bị lăp cái đoạn tính tổng tiền nhập không ạ

lặp chỗ nào nhỉ?
Theo tôi, bạn có thể xóa bỏ mấy lệnh printf khỏi mấy hàm, mấy hàm k dùng hàm void nữa mà return kết quả của phép tính, sau đó bạn muốn in KQ hay làm gì vs kết quả đó thì mang ra dùng thì hay hơn.

2 Likes

Bạn có thể tạo 1 biến total. Mỗi lần bạn nhập thông tin từ bán phím thì cứ cộng vào total. Như vậy thì mình khỏi phải tạo 1 cái for khác để tính tổng. Bạn tạo 1 hàm trả về giá trị total thôi.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?