30/09/2018, 17:09

Lỗi memcpy.asm not found

Các anh chị cho e hỏi? Sao chương trình của e bị lỗi phải break nếu nhập từ 3 sinh viên trở lên ! Em xin cảm ơn.
Sau đây là code của e :
Candidate.h

#pragma once
#include "iostream"
#include <cstring>
using namespace std;
class Candidate
{
public:
	Candidate();
	~Candidate();
	void setName(const string &name);
	string getName() const;
	void setMssv(int mssv);
	int getMssv();
	void setToan(int toan);
	int getToan();
	void setVan(int van);
	int getVan();
	void setAnh(int anh);
	int getAnh();
	int tongdiem();
private:
int	m_mssv , m_toan , m_van, m_anh;
string	m_name;
	

};
```

Candidate.cpp

#include "Candidate.h"
#include "cstring"
#include "iostream"
using namespace std;

Candidate::Candidate()
{
	m_name = " ";
	m_toan = 0;
	m_van = 0;
	m_anh = 0;
}


Candidate::~Candidate()
{

}

void Candidate::setName(const string &name)
{
	m_name = name;
}
std::string Candidate::getName() const
{
	return m_name;
}
void Candidate::setMssv(int mssv)
{
	m_mssv = mssv;
}
int Candidate::getMssv()
{
	return m_mssv;
}
void Candidate::setToan(int toan)
{
	m_toan = toan;
}
int Candidate::getToan()
{
	return m_toan;
}
void Candidate::setVan(int van)
{
	m_van = van;
}
int Candidate::getVan()
{
	return m_van;
}
void Candidate::setAnh(int anh)
{
	m_anh = anh;
}
int Candidate::getAnh()
{
	return m_anh;
}
int Candidate::tongdiem()
{
	return m_toan + m_anh + m_van;
}

Main:

#include "Candidate.h"
#include "stdio.h"
#include "iostream"
#include "string"
using namespace std;


int main()
{

	int n = 0, i = 0,  temp;
	char name[20];
	cout << "Nhap so luong thi sinh can tao ";
	cin >> n;
	cout << "-------------------------------" << endl;
	Candidate *sv = new Candidate[n];


	for (i = 1; i <= n; i++)
	{
		cout << "Nhap ten thi sinh thu " << i << " ";
		fflush(stdin);
		cin.getline(name, 40);
		sv[i].setName(name);
		cout << "Nhap mssv thu " << i << " ";
		cin >> temp;
		sv[i].setMssv(temp);
		cout << "Nhap diem toan hoc sinh thu " << i << " ";
		cin >> temp;
		sv[i].setToan(temp);
		cout << "Nhap diem van hoc sinh thu " << i << " ";
		cin >> temp;
		sv[i].setVan(temp);
		cout << "Nhap diem anh hoc sinh thu " << i << " ";
		cin >> temp;
		sv[i].setAnh(temp);
		cout << "---------------------------------" << endl;

	}
	
	for (i = 1; i <= n; i++)
	{
		cout << "Ten thi sinh thu " << i << " la";
		cout<<sv[i].getName();
		cout << "Mssv thu " << i << "la ";
		cout << sv[i].getMssv() << endl;
		cout << "Tong diem la ";
		cout << sv[i].tongdiem() << endl;

	}
	delete[] name;
	system("pause");
}
Mai Anh Dũng viết 19:15 ngày 30/09/2018

Các anh chị cho e hỏi? Sao chương trình của e bị lỗi phải break nếu nhập từ 3 sinh viên trở lên ! Em xin cảm ơn.

Khoa miêu tả rõ hơn tí, mình nhập vào như thế nào nhỉ?

Nguyen Khoa viết 19:23 ngày 30/09/2018

Nếu e chọn nhập 3 sv thì e nhập vào sv 1 ,sv 2 thì ok nhưng tới sv 3 thì xuất hiện lỗi nó hiện lên cái khung bắt mình phải break,break xong thì nó hiện lên một trang memcpy.asm not found,Nếu chọn nhập 4 sv thì sv 1,2,3 thì ok tới sv 4 thì bị lỗi. Em có tìm hiểu trên mạng thì có người bảo
You’re attempting to copy data to a pointer that points to NULL.
E.g. you haven’t allocated memory for the ptr.

... viết 19:20 ngày 30/09/2018
for (i = 1; i <= n; i++)

Từ 0 đến n-1 thôi bạn.

Nguyen Khoa viết 19:20 ngày 30/09/2018

Sao khi sửa lại theo bạn thì chương trình chạy được ròi , cám ơn bạn nhiều lắm . Nhưng mình vẫn chưa hiểu tại sao sữa lại v thì chương trình chạy được vậy bạn.

Mai Anh Dũng viết 19:23 ngày 30/09/2018

Trong nhiều ngôn ngữ lập trình, có C/C++, mảng bắt đầu từ 0. Thế nên vòng for phải là

for(i = 0; i < n; ++i)

Hoặc

for (i = 0; i <= n-1; ++i)
Nguyen Khoa viết 19:26 ngày 30/09/2018

À e hiểu ròi cám ơn a

Bài liên quan
0