在 for 循环中使用 class n 次 C++
using a class n times with a for loop c++
我正在努力学习 类,所以在这里我想创建 n 数三角形和矩形类型,输入 a、b、c,也从用户输入然后计算它们。我正在尝试用 for 循环获得 n 个三角形和矩形,但最后我只打印用户输入的最大 S() 和 P() .. 例如,如果我用户说 n=2,那么会有 2 个三角形和 2 个矩形 .. 矩形 a1 = 1, b1 = 2;矩形 a2 = 3, b2 = 4.. 将得到 s() 输出 s = 12 并再次得到 s = 12 而不是 s = 2 和 s = 12
enter image description here
对于有史以来最糟糕的描述,我深表歉意..
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();
}
您每次调用 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;}
我正在努力学习 类,所以在这里我想创建 n 数三角形和矩形类型,输入 a、b、c,也从用户输入然后计算它们。我正在尝试用 for 循环获得 n 个三角形和矩形,但最后我只打印用户输入的最大 S() 和 P() .. 例如,如果我用户说 n=2,那么会有 2 个三角形和 2 个矩形 .. 矩形 a1 = 1, b1 = 2;矩形 a2 = 3, b2 = 4.. 将得到 s() 输出 s = 12 并再次得到 s = 12 而不是 s = 2 和 s = 12 enter image description here 对于有史以来最糟糕的描述,我深表歉意..
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();
}
您每次调用 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;}