Lỗi in tổng điểm trong hàm điều kiện

e in phần sinh viên có tổng điểm trung bình >=7 và không có môn nào dưới 3 mà không ra đúng kq

#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)
    {
        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+i;

        }
    }

}
//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);}


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

Bạn tự debug đi. Cái này dễ nên debug cho quen. Gợi ý: sai lúc bạn tính tổng.

4 Likes

cảm ơn bạn nhiều nha

à bạn oi cái điểm tổng là đúng đề bài mà bạn với cả nó cx k ảnh hưởng đén đếm mà bạn

Không phải tổng điểm trung bình. Cái tổng của số sinh viên kìa. Bạn debug đi. Cứ để nó in ra màn hình là thấy sai chỗ nào liền. Chạy từ đầu tới cuối khó thấy chỗ sai khi mà bạn còn đang chập chững. In ra rồi sau này xoá lệnh in thôi, không sao đâu. Thêm dòng này vào:

std::cout << "tổng số sinh viên đáp ứng yêu cầu hiện tại: " << x << std::endl;
3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?