Code sử dụng struct bị lỗi primary-expression

Em code đoạn code như sau sử dụng struct nhưng có lỗi primary-expression mà e k biết phải sửa thế nào mọi người giúp em với

#include <iostream>
#include <cstring>
using namespace std;
   struct subject
{
    float math;
    float eng;
    float dev;
};
struct date
{
    int day;
    int month;
    int year;
};
struct student
{
    char code[10];
    char name[100];  
    char rank[10];
    date d;
    subject sub;
};
student s[5];
void input( student s[])
{
    for(int i=0;i<4;i++)
    {
        cout<<"Add student's "<<i+1<<" code: ";
        cin>>s[i].code;
        cout<<"Add student's "<<i+1<<" name: ";
        cin.ignore();
        cin.getline(s[i].name,100);
        cout<<"Add student's "<<i+1<<" date of birth: ";
        cin>>s[i].d.day;
        cin>>s[i].d.month;
        cin>>s[i].d.year;
        cout<<"Add student's "<<i+1<<" math mark: ";
        cin>>s[i].sub.math;
        cout<<"Add student's "<<i+1<<" english mark: ";
        cin>>s[i].sub.eng;
        cout<<"Add student's "<<i+1<<" programming mark: ";
        cin>>s[i].sub.dev;
    }
}
void output( student s[])
{
    float avg;
    cout<<"    "<<"-----Information List-----"<<endl;
    cout<<"STT"<<"\t"<<"Ma sinh vien "<<"\t"<<"Ho va ten "<<"\t"<<"Ngay thang nam sinh "<<"\t"<<"Diem Toan"<<"\t"<<"Diem Anh"<<"\t"<<"Diem Code"<<"Diem trung binh"<<"\t"<<"Xep loai"<<"\n";
    for(int i=0;i<4;i++)
    {
        avg=(s[i].sub.math+s[i].sub.eng+s[i].sub.dev)/3;
        if(avg>=8);
        {
            strcpy(s[i].rank,"Gioi");
            cout<<i+1<<"\t"<<s[i].code<<"\t"<<s[i].name<<"\t"<<s[i].d.day<<" "<<s[i].d.month<<" "<<s[i].d.year<<"\t"<<s[i].sub.math<<"/t"<<s[i].sub.eng<<"\t"<<s[i].sub.dev<<"\t"<<avg<<"\t"<<s[i].rank<<"\n";
        }
        if(avg<8 && avg>=6)
        {
            strcpy(s[i].rank,"Kha");
            cout<<i+1<<"\t"<<s[i].code<<"\t"<<s[i].name<<"\t"<<s[i].d.day<<" "<<s[i].d.month<<" "<<s[i].d.year<<"\t"<<s[i].sub.math<<"/t"<<s[i].sub.eng<<"\t"<<s[i].sub.dev<<"\t"<<avg<<"\t"<<s[i].rank<<"\n";
        }
        if(avg<6 && avg>=3)
        {
            strcpy(s[i].rank,"TB");
            cout<<i+1<<"\t"<<s[i].code<<"\t"<<s[i].name<<"\t"<<s[i].d.day<<" "<<s[i].d.month<<" "<<s[i].d.year<<"\t"<<s[i].sub.math<<"/t"<<s[i].sub.eng<<"\t"<<s[i].sub.dev<<"\t"<<avg<<"\t"<<s[i].rank<<"\n";
        }
        if(avg<3)
        {
            strcpy(s[i].rank,"Yeu");
            cout<<i+1<<"\t"<<s[i].code<<"\t"<<s[i].name<<"\t"<<s[i].d.day<<" "<<s[i].d.month<<" "<<s[i].d.year<<"\t"<<s[i].sub.math<<"/t"<<s[i].sub.eng<<"\t"<<s[i].sub.dev<<"\t"<<avg<<"\t"<<s[i].rank<<"\n";
        }
    }
}
int main()
{
 
    input( student s);
    output( student s);
    return 0;
}

Lỗi này hình như mình cũng gặp rồi. Bạn chưa deftype struct mà đã sử dụng nên vậy. Giờ đang on ĐT nên ko sửa cho bạn dc.

Trong C++ ko khai báo “struct T x” nữa nhé, chỉ cần T x thôi.

1 Like
#include <iostream>
#include <cstring>
using namespace std;
   struct Subject
{
    float math;
    float eng;
    float dev;
};
typedef struct Subject subject;
struct Date
{
    int day;
    int month;
    int year;
};
typedef struct Date date;
struct Student
{
    char code[10];
    char name[100];  
    char rank[10];
    date d;
    subject sub;
};
typedef struct Student student;
student s[5];
void input( student S[])
{
    for(int i=0;i<4;i++)
    {
        cout<<"Add student's "<<i+1<<" code: ";
        cin>>s[i].code;
        cout<<"Add student's "<<i+1<<" name: ";
        cin.ignore();
        cin.getline(s[i].name,100);
        cout<<"Add student's "<<i+1<<" date of birth: ";
        cin>>s[i].d.day;
        cin>>s[i].d.month;
        cin>>s[i].d.year;
        cout<<"Add student's "<<i+1<<" math mark: ";
        cin>>s[i].sub.math;
        cout<<"Add student's "<<i+1<<" english mark: ";
        cin>>s[i].sub.eng;
        cout<<"Add student's "<<i+1<<" programming mark: ";
        cin>>s[i].sub.dev;
    }
}
void output( student s[])
{
    float avg;
    cout<<"    "<<"-----Information List-----"<<endl;
    cout<<"STT"<<"\t"<<"Ma sinh vien "<<"\t"<<"Ho va ten "<<"\t"<<"Ngay thang nam sinh "<<"\t"<<"Diem Toan"<<"\t"<<"Diem Anh"<<"\t"<<"Diem Code"<<"Diem trung binh"<<"\t"<<"Xep loai"<<"\n";
    for(int i=0;i<4;i++)
    {
        avg=(s[i].sub.math+s[i].sub.eng+s[i].sub.dev)/3;
        if(avg>=8);
        {
            strcpy(s[i].rank,"Gioi");
            cout<<i+1<<"\t"<<s[i].code<<"\t"<<s[i].name<<"\t"<<s[i].d.day<<" "<<s[i].d.month<<" "<<s[i].d.year<<"\t"<<s[i].sub.math<<"/t"<<s[i].sub.eng<<"\t"<<s[i].sub.dev<<"\t"<<avg<<"\t"<<s[i].rank<<"\n";
        }
        if(avg<8 && avg>=6)
        {
            strcpy(s[i].rank,"Kha");
            cout<<i+1<<"\t"<<s[i].code<<"\t"<<s[i].name<<"\t"<<s[i].d.day<<" "<<s[i].d.month<<" "<<s[i].d.year<<"\t"<<s[i].sub.math<<"/t"<<s[i].sub.eng<<"\t"<<s[i].sub.dev<<"\t"<<avg<<"\t"<<s[i].rank<<"\n";
        }
        if(avg<6 && avg>=3)
        {
            strcpy(s[i].rank,"TB");
            cout<<i+1<<"\t"<<s[i].code<<"\t"<<s[i].name<<"\t"<<s[i].d.day<<" "<<s[i].d.month<<" "<<s[i].d.year<<"\t"<<s[i].sub.math<<"/t"<<s[i].sub.eng<<"\t"<<s[i].sub.dev<<"\t"<<avg<<"\t"<<s[i].rank<<"\n";
        }
        if(avg<3)
        {
            strcpy(s[i].rank,"Yeu");
            cout<<i+1<<"\t"<<s[i].code<<"\t"<<s[i].name<<"\t"<<s[i].d.day<<" "<<s[i].d.month<<" "<<s[i].d.year<<"\t"<<s[i].sub.math<<"/t"<<s[i].sub.eng<<"\t"<<s[i].sub.dev<<"\t"<<avg<<"\t"<<s[i].rank<<"\n";
        }
    }
}
int main()
{
 
    input(s);
    output(s);
    return 0;
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?