我正在嘗試學習課程,所以在這里我想創建 n 個三角形和矩形型別,輸入 a、b、c,還從用戶輸入,然后計算它們.. 我試圖獲得 n 個三角形和矩形使用 for 回圈,但最后我只列印用戶輸入的最大 S() 和 P() .. 例如,如果我用戶說 n=2,那么將有 2 個三角形和 2 個矩形 .. 矩形 a1 = 1 , b1 = 2; 矩形 a2 = 3, b2 = 4 .. 將得到 s() 輸出 s = 12 并再次 s = 12 而不是 s = 2 和 s = 12 在此處輸入影像描述 對不起,有史以來最糟糕的描述......
class Rectangle
{
protected:
int a, b;
virtual double S()
{
return a*b;
}
virtual double P()
{
return (2*a) (2*b);
}
public:
Rectangle (int aa, int bb) {a = aa; b = bb;}
virtual void Input()
{
cout << " enter a: "; cin >> a;
cout << " enter b: "; cin >> b;
cout << endl;
}
virtual void Print()
{
cout << " Rectangle S = " << S() << endl;
cout << " Rectangle P = " << P() << endl;
cout << endl;
}
};
int main()
{
int n;
cout << " enter number of triangles and rectangles... "; cin >> n;
cout << endl;
Rectangle rectangle(1, 1);
Triangle triangle(1,1,1);
for (int i=0; i<n; i )
{
rectangle.Input();
}
for (int i=0; i<n; i )
{
rectangle.Print();
}
uj5u.com熱心網友回復:
每次呼叫時都會覆寫相同的變數Input()。相反,創建一個vector矩形。
#include <vector>
class Rectangle {
// ...
};
int main()
{
// ...
std::vector<Rectangle> rectangles(n);
for (int i=0; i<n; i )
{
rectangles[i].Input();
}
for (int i=0; i<n; i )
{
rectangles[i].Print();
}
}
您需要添加一個默認建構式,Rectangle以便您可以將其與vector.
例如:
Rectangle() { a = 0; b = 0; }
Rectangle(int aa, int bb) {a = aa; b = bb;}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477567.html
上一篇:帶有for回圈的專用輸出
