Nhập/xuất dữ liệu cho mảng struct

Mảng với kiểu dữ liệu tự định nghĩa khi nhập và xuất dữ liệu vào mảng có khác gì khi nhập và xuất dữ liệu với kiểu dữ liệu bình thường không ạ?
Tại sao chương trình này chạy lại bị lỗi ạ?

#include <iostream>
#include <string>
#include <stdio.h>

using namespace std;

struct student {
    int ID;
    string name;
    int age;
    double avg_hk1, avg_hk2;
    student () {
    }
    student (int _ID, string _name, int _age, int _avg_hk1, int _avg_hk2) {
        ID = _ID;
        name = _name;
        age = _age;
        avg_hk1 = _avg_hk1;
        avg_hk2 = _avg_hk2;
    }
    void Get() {
        fflush(stdin);
        cin >> ID;

        fflush(stdin);
        getline(cin, name);

        fflush(stdin);
        cin >> age;

        fflush(stdin);
        cin >> avg_hk1;
        cin >> avg_hk2;

    }
};

    int main() {
    int num_student;
    cin >> num_student;
    student Stu[num_student];

    for (int i = 0; i < num_student; i++) {
        Stu[i].Get();
    }

    for (int i = 0; i < num_student; i++) {
        cout << Stu[i].ID << " " << Stu[i].name << " " << Stu[i].age
            << " " << Stu[i].avg_hk1 << " "
             << Stu[i].avg_hk2 << endl ;
    }

    return 0;

}

Theo mình thì chỗ khai báo mảng stu[num_student] phải dùng cấp phát động phải không nhỉ

3 Likes

Sau khi đổi thành mảng động thì nó thế này ạ???

void Get() {
        fflush(stdin);
        cin >> ID;

        fflush(stdin);
        getline(cin, name);

        fflush(stdin);
        cin >> age;

        fflush(stdin);
        cin >> avg_hk1;
        cin >> avg_hk2;

    }

cin >> ID và bạn nhập vào: 011 hasdgh snd … ==> Do kiểu của IDint nên ID chỉ nhận được giá trị là 011 <=> 11 . Và những kí tự còn lại sẽ được đưa vào buffer.
Trước lên cin tiếp theo, buffer đã bị xóa.
getline(cin, name) --> " 82 jwq… . … " --> biến name sẽ được gán giá trị bằng chuỗi vừa nhập.
Tương tự với cin >> age thì age nhận giá trị 76. Và 27 là giá trị của avg_hk1

Bạn đã sử dụng std::cin nhưng chưa rõ về nó, bạn thử tham khảo clip của anh Đạt để biết rõ hơn về std::cin.

3 Likes

cảm ơn ạ :heart_eyes::heart_eyes::heart_eyes::heart_eyes:

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