Giúp em về cách code trong C++?

Chào mọi người em mới đang học về class trong C++ và em có bài tập là:Xây dựng một lớp Diem private gồm hoành độ và tung độ public: gồm các hàm nhập, xuất, và hàm tính khoảng cách từ một điểm đến gốc tọa độ.Viết chương trình:
1.Nhập toạn độ n điểm
2.In ra các điểm nằm phía trên trục hoành
3.In ra điểm xa gốc tọa độ nhất
Thì em muốn hỏi là câu hỏi 2 và 3 đấy mình nên viết trong public hay là viết tại hàm main ạ

viết tại hàm main :V

2 Likes

Sao không nên viết trong public vậy ạ?

1 điểm thì chỉ biết thông tin của chính nó, làm gì biết tới các điểm khác mà viết trong public???

In ra các điểm nằm phía trên trục hoành
In ra điểm xa gốc tọa độ nhất

nếu em viết trong public (public gì??) thì viết như thế nào, truyền 1 cái mảng vào à?

4 Likes

Nhưng mà anh ơi cái in điểm nằm trên trục hoành (tung độ > 0) thì khi viết ở hàm main em không truy xuất được cái tung độ đó vì nó ở private nên em k thể so sánh nó được mà em phải viết ở public như này ạ.

#include <iostream>
using namespace std;
class Diem {
private:
	float x;
	float y;
public:
	void Nhap();
	void Xuat();
	float Kc();
	void TrenTrucHoanh();
};
void Diem::Nhap() {
	cout << "Nhap hoanh do va tung do: ";
	cin >> x >> y;
}
void Diem::Xuat() {
	cout << "(" << x << "," << y << ")" << "  ";
}
float Diem::Kc() {
	return sqrt(pow(x - 0, 2) + pow(y - 0, 2));
}
void Diem::TrenTrucHoanh() {
	if (y > 0) {
		Xuat();
	}
}
int main() {
	Diem d[100];
	int i, n, a = 0;
	float max;
	cout << "Nhap so luong diem n = ";
	cin >> n;
	for (i = 0; i < n; i++) {
		cout << "Nhap diem thu :" << i + 1 << endl;
		d[i].Nhap();
	}
	cout << "________________________________________" << endl;
	for (i = 0; i < n; i++) {
		d[i].Xuat();
	}
	cout << endl;
	for (i = 0; i < n; i++) {
		
	}
	max = 0;
	for (i = 0; i < n; i++) {
		if (d[i].Kc() > max) {
			max = d[i].Kc();
			a = i;
		}
	}
	cout << "Diem xa nhat goc toa do la diem thu " << a + 1 << endl;
	cout << "Cac diem phia tren truc hoanh: ";
	for (i = 0; i < n; i++) {
		d[i].TrenTrucHoanh();
	}
	return 0;
}

thì em viết hàm getX() getY() trả về x y chẳng hạn

3 Likes

Viết như nào anh em chưa biết cái đấy ạ.

à mà ko cần cũng được, em viết 1 hàm TrenTrucHoanh() là đúng rồi đó

bool TrenTrucHoanh() const;

bool Diem::TrenTrucHoanh() const { return x > 0; }


for ... {
    if (d[i].TrenTrucHoanh()) {
        d[i].Xuat();
    }
}

viết hàm getX() là như thế này:

int getX() const { return x; }

// trong main
for ... if (d[i].getX() > 0) d[i].Xuat();

em viết 1 hàm có tên là TrenTrucHoanh thì rõ ràng hơn là d[i].getX() > 0

4 Likes

Cảm ơn anh nha :heart:

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