Присвоить элементу массива значение
Мне нужно базу отсортировать с помощью merge sort по именам. Я передаю массив с базой Ошибка возникает на моменте присваивания значению массива элемента "no suitable conversation function from "database" to "database*" exists" --- "record[k] = L[i];" Как его присвоить?
struct database
{
char name[32] = {0};
unsigned short int number;
char date[8] = {0};
char lawyer[22] = {0};
} * stacks;
void merge(database *record[], int first, int mid, int last)
{
database *L = new database[mid - first + 1];
database *R = new database[last - mid];
for (int i = 0; i < (mid - first + 1); i++)
{
L[i] = *(record[first + i]);
}
for (int j = 0; j < (last - mid); j++)
{
R[j] = *(record[mid + j + 1]);
}
int i = 0, j = 0, k = first;
for (; (i < (mid - first + 1)) && (j < (last - mid)); k++)
{
if (L[i].name[i] <= R[j].name[j])
{
record[k] = L[i];
i++;
}
else
{
record[k] = R[j];
j++;
}
}
for (; i < (mid - first + 1); i++, k++)
{
record[k] = L[i];
}
for (; j < (last - mid); j++, k++)
{
record[k] = R[j];
}
}
void mergeSort(database *record[], int first, int mid, int last)
{
if (first < last)
{
int mid = (first + last) / 2;
mergeSort(record, first, mid);
mergeSort(record, mid + 1, last);
merge(record, first, mid, last);
}
}
Ответы (1 шт):
Автор решения: Alexey Vesker
→ Ссылка
Все дело в том, что record у вас объявлен как массив указателей, а L как динамический массив. Измените строку на *record[k] = L[i]; - заведется.