Giải thích phần cấp phát động

Thầy có giao bài tập về nhà, e đã code xong. Nhưng thầy yêu cầu dùng cấp phát động thay vì dùng cấp phát tĩnh như e. Em có xem video hướng dẫn cấp phát động nhưng vẫn k hiểu lắm! Và k code đc, mấy a/c giúp e phần cấp phát động với giải thích cho em hiểu thêm với!

Hàm 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();
};

Khai báo hàm:

#include <iostream>
#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;
	//cin.ignore(100, '\n');
	fflush(stdin);
	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;
}

Đoạn code này đợt e có hỏi về phần nhập chuỗi ^^

1 Like

:sweat_smile:

2 Likes

Cấp phát động là không cần phải khai báo hằng số số lượng phần tử mà bạn muốn khởi tạo.
Vì vậy phải sử dụng con trỏ :smiley:
Hoặc bạn có thể sử dụng vector or list trong thư viện #include<vector>, #include<list>
Còn phần cấp phát động thì như trong video anh Huy trích dẫn bên trên :sweat_smile:

1 Like

Có xem r mà k hiểu và k áp dụng vô bài tập được :cold_sweat:

Vậy bài trên k dùng cấp phát động được hả bạn?

Có chứ bài trên là mẫu để áp dụng cấp phát động đó bạn.
Cấp phát động là việc tạo con trỏ cấp phát bạn để ý chỗ đó là được đó :smiley:

2 Likes

ThiSinh *a=new ThiSinh[n];

1 Like

báo lỗi k xác định đc n bạn ơi

Thêm vào 1 câu hỏi cần nhập bao nhiêu thí sinh trước phần cấp phát động

puts("nhap n: "); scanf("%d",&n);
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?