首页 > 解决方案 > 我可以以某种方式将循环内的参数与第一个循环内的参数联系起来吗?

问题描述

#include <iostream>
using namespace std;
int main()
{
    int x, y, z;
    cout << "how many elements? " << endl;
    cin >> x;
    int arr[x];
    for(int i = 0; i < x; i++)
    {
        cout << "give number" << endl;
        cin >> arr[i];
    }
    cout << endl;
    y = 0;
    z = 0;
//  for(int i = y; i >= 0; i-z)
    while (z < x)
    {
        for(int i = y; i < x; i++)
        {
            for(int i = z; i < x-y; i++)
            {
                cout << arr[i] << " ";
            }
            cout << endl;
            y++;
        }
        z++;
        cout << z;
    }
//  while (z < x);
    return 0;
}

我希望循环z中的参数与第二个循环中的while参数链接。我希望程序打印数字从 1 到,然后从 2 到,依此类推,直到它只打印。i=zfornnn

不要介意cout<<z;第 30 行中的这一点,我正在检查这是否有效。

标签: c++

解决方案


我不知道您所说的“与 z 链接”是什么意思,但这是循环应该做的事情:

for (int z = 0; z < x; ++z) // NOTE: get rid of outside z
    {
        for(int i{z}; i < x; ++i)
            std::cout << arr[i] << " ";
        std::cout << std::endl;
    }

内部循环遍历数组的所有值,从 z 开始,到 x-1 结束。由于 z 递增,下一个循环将从下一个位置开始,从 z 加一开始,到 x-1 结束。

也改变:

int arr[x];

至:

int* arr = new int[x];

并在最后添加这一行:

delete [] arr;

这应该被添加和更改,因为 C++ 不支持可变长度数组。但是,它确实支持指向被视为数组的内存块的指针。您还应该在完成后删除您使用的内存。


推荐阅读