【问题标题】:Sort array in ascending order nested loop problem数组升序排序嵌套循环问题
【发布时间】:2019-09-04 02:42:39
【问题描述】:

我正在使用嵌套的 for 循环按升序重新排列数组。

问题在于第二个(嵌套)for 循环中的 (y = x + 1)。我收到以下错误: 'x' 的名称查找已更改为 ISO 'for' 范围 [-fpermissive]

int i, y, temp;

    cout << "How many elements should be stored in array? ";
    cin >> i;

    int arr [i];

    for (int k = 0; k < i; k++)
    {
        cout << "Enter value for element at index " << k << ": ";
        cin >> arr[k];
    }

    for( int x = 0; x < i; x++);
    {
        for (int y = x + 1; y < i; y++)
        {
            if (arr[y] < arr[x])
            {
                temp = arr[x];
                arr[x] = arr[y];
                arr[x] = temp;
            }
        }
    }

错误:“x”的名称查找已更改为 ISO 'for' 范围 [-fpermissive]

【问题讨论】:

  • int arr [i]; 不是有效的 C++。谁在支持这类问题?
  • 您连续两次分配给arr[x] 的事实让我相信那里有错误。你可能打算写arr[y] = temp;
  • 代码中没有定义其他的x。
  • @NeilButterworth 问题有问题和代码有问题是有区别的。 int arr[i]; 是个问题,但问题在于代码,而不是问题。
  • @François 这是一个糟糕的问题,原因有很多——主要是它不会编译,如果它编译了,它会要求我们调试它。如果你是这样的人(最近经常发生这种情况),请不要。

标签: c++ algorithm sorting


【解决方案1】:

注意最后;

for( int x = 0; x < i; x++);

并删除它。

如果你不这样做,那么下一个{ 会启动一个未定义x 的块,它会在最后一个; 处死去

【讨论】:

    【解决方案2】:

    你后面有一个分号

    for( int x = 0; x &lt; i; x++);

    需要删除以包含以下块。

    【讨论】:

      【解决方案3】:

      问题是你有

      int i, y, temp;

      以后

      for (int y = x + 1; y &lt; i; y++)

      后面的y 隐藏了前面声明的。
      隐藏变量可能是错误的来源。

      【讨论】:

      • 好收获。奇怪的是警告抱怨x
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 2023-01-11
      • 2017-09-20
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多