30/09/2018, 20:04

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;
}
Pham Van Hai viết 22:18 ngày 30/09/2018

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

Em đang học C++ khi nhập vào fflush(stdin) trước getline(cin,ten) [image] khi chạy thử thì dấu enter vẫn bị nhận vào, em phải dùng cin.ignore() để thay thế cho fflush(stdin), em nhờ bạn chạy thử đoạn code trên máy nó thì vẫn hoạt động bình thường ??? nó dùng VS 2013 còn em dùng VS 2015, có ai có cách gì fix không giờ cài lại bản 2013 tốn thời gian quá.

#include <iostream> using namespace std; int main(int argc, char **argv){ int soA, soB, tong; binladen:cout << "nhap 2 so a, b de tinh tong" << endl; cin >> soA >> soB; tong = soA + soB; cout << "ket qua tong a+b = " << tong << endl; char c = getchar(); cout << "neu mun tiep tuc nhan phim 't' + enter, thoat nhan phim bat ky" << endl; cin >> c; if (c == 't'|| c=='T') { goto binladen; } return 0; } @ltd a Đạt cái lệnh fflush(stdin) dùng để xoá ký tự đệm k mong muốn sao a?

Sáng Béo viết 22:15 ngày 30/09/2018

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

Minh Tú viết 22:12 ngày 30/09/2018

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

Sáng Béo viết 22:21 ngày 30/09/2018

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

Minh Tú viết 22:20 ngày 30/09/2018

fflush(stdin);

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

Ngô Doãn Tuấn viết 22:06 ngày 30/09/2018

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

Sáng Béo viết 22:11 ngày 30/09/2018

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

Bài liên quan
0