“预期常量表达式”错误

AUserMadeMe

我一直在尝试制作合并排序代码,但是此错误消息不断出现。即使主函数中的大小是恒定的,它也会显示“预期的常数表达式”。我试图修复它,但无法修复。我该怎么办 ?

#include<iostream>
using namespace std;
void merge(int data[], int size, int first, int mid, int last);

void mergeSort(int data[], int size, int first /*low*/, int last/*high*/)
{
    if(first<last)
    {
        //sort each half
        int mid = (first + last)/2;
        //index of midpoint 
        //sort left half the array [first .... mid]
        mergeSort(data, size, first, mid);
        //sort right half of the array [mid+1 ..... last]
        mergeSort(data, size, mid+1, last);
        //merge the two halves 
        merge(data, size, first, mid, last);
    }
}

void merge(int data[], int size, int first, int mid, int last)
{

    int tempArr[size];
    int i=first;
    int j=mid+1;
    int k=first;

    while (i<=mid && j<=last)
    {
        if (tempArr[i] <= tempArr[j])
        {
            data[k]=tempArr[i];
        }
        else
        {
            data[k] = tempArr[j];
            ++j;
        }
        ++k;
    }

    while (i <= mid)
    {
        data[k] = tempArr[i];
        ++k;
        ++i;
    }
    }

int main()
{
    const int size = 10;
    int arr[size] = {1, 0, 6, 15, 30, 56, 23, 3, 7, 10};
    mergeSort(arr, size, 0, size);
    for(int i=0; i<size; i++)
    {
        cout<< arr[i]<<" ";
    }
    system("pause");
    return 0;
}
Eissa N.

您的代码中有几个错误。我为您重新编写了代码:),以便您可以进行更多研究,看看错误在哪里。但是,仍有许多改进空间!您可以在此处运行代码

#include<iostream>
using namespace std;
void merge(int data[], int size, int first, int mid, int last);

void mergeSort(int data[], int size, int first /*low*/, int last/*high*/)
{
    if(first<last-1) // do it if there are more than one lement
    {
        //sort each half
        int mid = (first + last)/2;
        //index of midpoint 
        //sort left half the array [first .... mid-1]
        mergeSort(data, size, first, mid);
        //sort right half of the array [mid ..... last-1]
        mergeSort(data, size, mid, last);
        //merge the two halves 
        merge(data, size, first, mid, last);
    }
}

void merge(int data[], int size, int first, int mid, int last)
{
    int* tempArr = new int[size];

    for(int i = 0; i < size; ++i)
        tempArr[i] = data[i];

    int i=first;
    int j=mid;
    int k=first;

    while (i<mid && j<last)
    {
        if (tempArr[i] <= tempArr[j])
        {
            data[k]=tempArr[i];
            i++;
        }
        else
        {
            data[k] = tempArr[j];
            ++j;
        }
        ++k;
    }

    while (i < mid)
    {
        data[k] = tempArr[i];
        ++k;
        ++i;
    }
    while (j < last)
    {
        data[k] = tempArr[j];
        ++k;
        ++j;
    }
    delete[] tempArr;
}

int main()
{
    const int size = 10;
    int arr[size] = {1, 0, 6, 15, 30, 56, 23, 3, 7, 10};
    mergeSort(arr, size, 0, size);
    for(int i=0; i<size; i++)
    {
        cout<< arr[i]<<" ";
    }
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MS Visual Studio 错误:预期的常量表达式

用C语言编程:预期的常量表达式错误

错误:不是常量表达式。(扑)

Maven Android插件错误“需要常量表达式”

编译错误:需要常量表达式

静态断言C ++-常量表达式错误

VBA - 错误“常量表达式需要”

地址常量表达式

需要澄清常量表达式

Android“需要常量表达式”

需要常量表达式

表达式不是整数常量表达式

SystemVerilog无法识别常量:错误:范围必须由常量表达式限制

glvalue整型常量表达式是常量表达式吗?

dart常量创建的参数必须是常量表达式

PHP错误:致命错误:常量表达式包含无效操作

Sub With Arguments 产生错误(编译错误:需要常量表达式)

如何克服错误:尝试将数据传递给 Flutter / dart 中的自定义类时预期的常量表达式

切换case语句错误:case表达式必须为常量表达式

对这个常量表达式的求值会引发异常。飞镖错误

Java代码将不会编译由于属性必须是常量表达式错误

错误:非常量表达式无法从类型'npy_intp'缩小为'int'

Java枚举:重构switch语句“需要常量表达式”会编译错误?

带字符串的switch语句中的常量表达式必需的错误

C结构对象堆栈-常量表达式中不允许函数调用(错误)

在常量表达式中调用的“静态constexpr”函数是...错误?

保持形式参数为常数时出现“需要常量表达式”错误

onRequestPermissionResult的转换大小写需要常量表达式错误

此错误消息正确吗:非类型模板参数不是常量表达式