Sửa lỗi tính tỷ lệ

mọi người giúp sửa lỗi với mk in mà k ra tỷ lệ

#include<conio.h>
#include<math.h>
#include<string.h>
struct sinhvien
{
    char hoten[30];
    char quequan[30];
    int ns;
    float dt,dv,da,ut;

};
void nhap(struct sinhvien a[],int n)
{
    int i;
    for(i=1;i<=n;i++)
   {
    printf("\nnhap du lieu sinh vien thu %d:",i);
    fflush(stdin);
    printf("\nho va ten:");
    gets(a[i].hoten);
    printf("\nque quan:");
    gets(a[i].quequan);
    printf("\nnam sinh:");
    scanf("%d",&a[i].ns);
    printf("\ndiem toan,diem van, diem anh, diem uu tien lan luot la:");
    scanf("%f%f%f%f",&a[i].dt,&a[i].dv,&a[i].da,&a[i].ut);}}
    void tinh(struct sinhvien a[],int n)
    {
        int i;
        for(i=1;i<=n;i++)
        {
float dtb=(a[i].dt+a[i].dv+a[i].da)/3;
float dt=a[i].dt+a[i].dv+a[i].da+a[i].ut;
        }

    }
   // dếm sinh vien có diem trung binh tu 7.0 tro nên va khong co mon nao duoi 3
    void dem(struct sinhvien a[],int n)
    {printf("nhap so sinh vien:");
    scanf("%d",&n);
        int x=0;
        int i;
         for(i=1;i<=n;i++)
        {
float dtb=(a[i].dt+a[i].dv+a[i].da)/3;
float dt=a[i].dt+a[i].dv+a[i].da+a[i].ut;
if(dtb>=7.0)
{
    if(a[i].dt>=3)
    {
        if(a[i].dv>=3)
        {
            if(a[i].da>=3)
                x=x+1;
                printf("in %d",x);

        }
    }

}
//printf("\nso sinh vien co diem trung binh tu 7 tro len va khong co mon nao duoi 3 la:%d",x);
    }printf("\nso sinh vien co diem trung binh tu 7 tro len va khong co mon nao duoi 3 la:%d",x);}
    void tyle(struct sinhvien a[],int n)
    {
       // b1:đếm số sinh viên có tổng điểm >24
        //b2:đc bao nhiêu chia cho n
        int i;
        int x=0;
         for(i=1;i<=n;i++)
        {
float dtb=(a[i].dt+a[i].dv+a[i].da)/3;
float dt=a[i].dt+a[i].dv+a[i].da+a[i].ut;
if(dt>24)
{
    x=x+1;
}


    }
    printf("in %d",x);
    printf("ty le = %f",x/n);}


main()
{
    int n,i;
    printf("so sinh vien la:");
    scanf("%d",&n);
    struct sinhvien b[20];
    nhap(b,n);
    dem(b,n);
    tyle(b,n);}

Cả xn đều là kiểu intx luôn luôn nhỏ hơn hoặc bằng n nên kết quả sẽ luôn là số nguyên (0 hoặc 1).
Bạn biết cách ép kiểu chưa?

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