C++ c++;创建数组 枚举形状类型 { 矩形=1, 圆圈 三角形 马克斯 }; int main() { int n; std::cout>n; 向量形状; 对于(int i=0;i高度; Shape*rect=新矩形(宽度、高度); 形状。推回(rect); std::cout l2; 标准:cout>l3; 形状*tri=新三角形(l1、l2、l3); 形状。推回(tri); 打破 } 违约: 打破 } } 而(n>i); { 打破 } } } 返回0; }
这里有一个抽象的形状类和继承它的矩形、圆形和三角形。我想介绍n个形状,并为它们做一个循环。C++ c++;创建数组 枚举形状类型 { 矩形=1, 圆圈 三角形 马克斯 }; int main() { int n; std::cout>n; 向量形状; 对于(int i=0;i高度; Shape*rect=新矩形(宽度、高度); 形状。推回(rect); std::cout l2; 标准:cout>l3; 形状*tri=新三角形(l1、l2、l3); 形状。推回(tri); 打破 } 违约: 打破 } } 而(n>i); { 打破 } } } 返回0; },c++,arrays,sorting,C++,Arrays,Sorting,这里有一个抽象的形状类和继承它的矩形、圆形和三角形。我想介绍n个形状,并为它们做一个循环。 例如,我选择我想做3个形状,选择它们的选项出现,选择一个形状,然后再重复3次。我有一个关于这个的作业,我必须使用do while。我尝试了一些廉价的尝试,但我失败了。有什么建议吗 您在内部循环中重用索引i,导致外部循环行为异常。将其更改为另一个变量,如j,并更改此变量的相关用途。这只是一个快速解释,说明如何执行此操作 enum ShapeType { RECTANGLE = 1, CIRC
例如,我选择我想做3个形状,选择它们的选项出现,选择一个形状,然后再重复3次。我有一个关于这个的作业,我必须使用do while。我尝试了一些廉价的尝试,但我失败了。有什么建议吗 您在内部循环中重用索引
i
,导致外部循环行为异常。将其更改为另一个变量,如j
,并更改此变量的相关用途。这只是一个快速解释,说明如何执行此操作
enum ShapeType
{
RECTANGLE = 1,
CIRCLE,
TRIANGLE,
MAX
};
int main()
{
int n;
std::cout << "Number of elements : ";
std::cin >> n;
std::vector <Shape *> shapes;
for(int i = 0; i < n; i++)
{
std::cout << "What shape do you want to build \n 1) Rectangle\n 2) Circle\n 3) Triangle\n" << std::endl;
int t;
// de implementat do while
std::cin >> t;
for(ShapeType i = RECTANGLE; i < MAX; i = static_cast<ShapeType>(i+1))
{
do
{
switch (t)
{
case RECTANGLE:
{
int width, height;
std::cout << "Width = "; cin >> width;
std::cout << "Height = "; cin >> height;
Shape *rect = new Rectangle(width, height);
shapes.push_back(rect);
std::cout << "Rectangle area is: " << rect->getArea() << std::endl;
std::cout << "Rectangle perimeter is: " << rect->getPerimeter() << std::endl;
rect->draw();
break;
}
case CIRCLE:
{
double radius;
std::cout << "Please give circle radius: "; std::cin >> radius;
Shape *circ = new Circle(radius);
shapes.push_back(circ);
break;
}
case TRIANGLE:
{
double l1, l2 ,l3;
std::cout << "Side 1: "; std::cin >> l1;
std::cout << "Side 2: "; std::cin >> l2;
std::cout << "Side 3: "; std::cin >> l3;
Shape *tri = new Triangle(l1, l2, l3);
shapes.push_back(tri);
break;
}
default:
break;
}
}
while(n > i);
{
break;
}
}
}
return 0;
}
int n,i=0;
cout>n;
如果(n>0){
做{
int字形;
形状类型;
开关(形状类型){
大小写矩形:
打破
案例圈:
打破
...
}
++一,;
}while(当然,如果您更改内部索引变量,while(n>i);{break;}
是不相关的,因为i
不能高于n
(请参见外循环中的条件)我看到了具有相同索引名称的缺陷,对其进行了更改。但在循环中仍然给出了相同的大小写。如何使循环允许我根据所选元素的数量创建其他形状。现在,如果我选择5个元素并选择第一个圆,它将给出无限循环中的大小写。这是因为n>I
在do中..while
循环始终为真。您将i
初始化为小于n
,并且i
永远不能大于n
。在(i@G.Ko谢谢,编辑。
int n,i=0;
cout << "Enter no of elements";
cin >> n;
if( n > 0 ){
do{
int shapeType;
cout << "choose type";
cin >> shapeType;
switch(shapeType){
case RECTANGLE:
break;
case CIRCLE:
break;
...
}
++i;
}while(i<n);
}