Code quản lý thí sinh không nhập được tên thí sinh

E mới học class nên code k biết lỗi gì mà k nhập tên đc, giúp e sửa lỗi với ạ

Phần main:

#include "ThiSinh.h"
#include <iostream>
using namespace std;
void main()
{
    int n;
    ThiSinh a[100];

    cout << "Nhap So sinh vien : ";
    cin >> n;

    for (int i = 0; i < n; i++)
    {
        a[i].Nhap();
    }
    cout << "Danh sach sinh vien diem > 15 la: " << endl;
    for (int i = 0; i < n; i++)
    {
        float kq = a[i].Tong();
        if (kq > 15)
            a[i].Xuat();

    }
}

Phần class:

#include <iostream>
#include <string.h>
using namespace std;
#pragma once
class ThiSinh
{
private:
    char Ma[20];
    string HoTen;
    int Ngay;
    int Thang;
    int Nam;
    float Toan;
    float Van;
    float Anh;
public:
    void Nhap();
    float Tong();
    void Xuat();
};

phần khai báo hàm:

#include <iostream>
#include <stdio.h>
#include <string>
#include "ThiSinh.h"
using namespace std;
void ThiSinh::Nhap()
{
    cout << "Nhap ma thi sinh: " << endl;
    cin >> Ma;
    cout << "Nhap ho ten thi sinh: " << endl;
    getline(cin, HoTen);
    cout << "Nhap ngay Thang nam sinh: " << endl;
    cin >> Ngay >> Thang >> Nam;
    cout << "Nhap diem toan, van, anh: " << endl;
    cin >> Toan >> Van >> Anh;
}

float ThiSinh::Tong()
{
    return Toan + Van + Anh;
}

void ThiSinh::Xuat()
{
    cout << "Ho Ten thi sinh: " << HoTen << endl;
    cout << "MSSV: " << Ma << endl;
}

Bạn dùng hàm lệnh cin.ignore(100, '\n'); trước lệnh nhận họ tên. Vì sao thì bạn đọc theo bên dưới


bạn thêm fflush(stdin); sau cin >> Ma; và trước getline(cin, HoTen); nhé

Nó báo lỗi bạn ơi @@

fflush() có 2 chữ f nhé bạn, sơ ri :stuck_out_tongue_closed_eyes:

Cam ơn bạn nhiều nha ^^

Sang c++ Thì bạn nên dùng cin.igrone()
Để xóa bỏ bộ nhớ đệm :smiley:

2 Likes

mình tưởng cái này ở java :smile: hóa ra là C++ cũng có. :smile:

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