Member 13358623 Ответов: 1

Код C++ о сортировке слиянием


Программа c ++ для слияния при выполнении показывает мне в выводе 8 ошибок, я думаю, что все они имеют размер массива, потому что он должен быть const. При выполнении массив делится пополам, что означает изменение размера массива. Не знаю, в этом ли причина, но я хочу, чтобы вы помогли мне как можно скорее. Благодарю

Что я уже пробовал:

#include<iostream>
использование пространства имен std;
пустота слияния(тип int а[], низкий интеллект, высокий инт, инт середине)
{
cout << "введенное слияние" < & lt; endl;
int n1 = high-low + 1;
int n2 = средний-высокий;
int L[n1 + 1] = 999;
int R[n2 + 1] = 999;
int i = 1, j = 1;
for (int i = 1; i <= n1; i++)
{
L[i] = a[low + i-1];
}
for (int j = 1; j <= n2; j++)
{
R[j] = a[high + j];
}

для (тип int к = низкое; к &ЛТ;= СЧ; к++)
{
если (L[i] <= R[j])
{
a[k] = L[i];
i = i + 1;
}
еще
{
a[k] = R[j];
j = j + 1;
}
}

}
пустота сортировка слиянием(тип int а[], int и низкий, высокий инт )
{
if (low < high)
{
инт середине;
mid = (low + high) / 2;
mergesort(a, low, high);
mergesort(a, mid + 1, high);
слияние (a, low, high, mid);
}
}
пустота главная()
{
int size = 7;
int a[7] = { 38, 43, 27, 3, 9, 82, 10 };
int low = 0;
int high = размер - 1;
mergesort(a, low, high);
for (int i = 0; i < 7; i++)
{
соиь <&ЛТ; а[я] &ЛТ;&ЛТ; "  ";
}
cout < & lt; endl;
}

Patrice T

"при выполнении показывает мне на выходе 8 ошибок"
Какие ошибки ?

Member 13358623

8 ошибок :

Ошибка 1 ошибка C2057: ожидаемое постоянное выражение c:\users\aaaaaa\desktop\data structures\merge\merge\merge\main.cpp 83 1 слияние
Ошибка 2 ошибка C2466: не удается выделить массив постоянного размера 0 c:\users\aaaaaa\desktop\data structures\merge\merge\merge\main.cpp 83 1 слияние
Ошибка 3 ошибка C2440: "инициализация": не удается преобразовать из " int " в " int []" c:\users\aaaaaa\desktop\data structures\merge\merge\merge\main.cpp 83 1 слияние
Ошибка 4 ошибка C2057: ожидаемое постоянное выражение c:\users\aaaaaa\desktop\data structures\merge\merge\merge\main.cpp 84 1 слияние
Ошибка 5 ошибка C2466: не удается выделить массив постоянного размера 0 c:\users\aaaaaa\desktop\data structures\merge\merge\merge\main.cpp 84 1 слияние
Ошибка 6 ошибка C2440: "инициализация": не удается преобразовать из " int " в " int []" c:\users\aaaaaa\desktop\data structures\merge\merge\merge\main.cpp 84 1 слияние
7 IntelliSense: выражение должно иметь постоянное значение c:\Users\aaaaaa\Desktop\Data Structures\merge\merge\merge\main.cpp 83 9 слияние
8 IntelliSense: выражение должно иметь постоянное значение c:\Users\aaaaaa\Desktop\Data Structures\merge\merge\merge\main.cpp 84 9 слияние

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

1 Ответов

Рейтинг:
1

Patrice T

Подумайте о том, что вы здесь делаете и что вам следует делать.

mergesort(a, low, high);
mergesort(a, mid + 1, high);
merge(a, low, high, mid);


Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.