int i, j, step;
int tmp;
for (step = Num / 2; step > 0; step /= 2)
for (i = step; i < Num; i++)
{
tmp = mass[i];
for (j = i; j >= step; j -= step)
{
if (tmp < mass[j - step])
mass[j] = mass[j - step];
else
break;
}
mass[j] = tmp;
}
}
//void PrintVector(int Vec[], int Num)//вывод элементов массива
//{
// SetConsoleTextAttribute(hStdOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
// cout << "Массив: " << endl;
// SetConsoleTextAttribute(hStdOut, 0x000F);
// for (int i = 0; i < Num; i++)
// {
// SetConsoleTextAttribute(hStdOut, 0x000F);
// cout << Vec[i];
// cout << endl;
// }
//}
void main() {
setlocale(LC_ALL, "Russian");
ConsoleCursorVisible(false, 100);
const int MaxNum = 100;
int Arr[MaxNum];
int N;
cout << "Диапазон массива указан в лабораторной работе (от -0.1 к 0.2)" << endl;
cout << "Введите количество элементов массива: ";
cin >> N;
float* Arr2 = new float[N];
int n = sizeof(Arr2) / sizeof(Arr2[0]);
2. Вы передаете в ShellSort() не инициализированный массив Arr2. В нем содержится мусор.
Я подозреваю, что вам сначала нужно инициализировать Arr2 с помощью случайных чисел, а уж потом вызывать ShellSort()
А как это сделать? Ведь вроде в Arr2[] я передал диапазон рандомных чисел и их вывод..
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C2664 "void ShellSort(int [],int)": невозможно преобразовать аргумент 1 из "float *" в "int []" LAB111(OOP) C:\Users\User\source\repos\LAB111(OOP)\pch.cpp 72
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) E0167 аргумент типа "float *" несовместим с параметром типа "int *" LAB111(OOP) C:\Users\User\source\repos\LAB111(OOP)\pch.cpp 72
Спасибо,я уже далеко продвинулся в своей работе с вашей помощью. Осталась последняя ошибка при вызове динамического float массива в качестве параметра, он преобразовывается в int и выдает ошибку
И,если я все же вас еще не задолбал, можно спросить, если мне нужно отсортировать этот массив с помощью сортировки Шелла, то вставлять его нужно куда? И как правильно вызвать?