Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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++ 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

这里有一个抽象的形状类和继承它的矩形、圆形和三角形。我想介绍n个形状,并为它们做一个循环。
例如,我选择我想做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);
    }