У меня есть массив комплексных чисел, и я хочу добавить новое комплексное число в самом первом положении массива.
У меня есть структура и функция, которая вводит новое комплексное число в первой позиции массива.
У меня есть структура, которая содержит комплексные числа
struct Complex
{
float imag;
float real;
};
У меня также есть функция, которая создает экземпляр такого комплексного числа в куче
struct Complex* instanceOfComplex(float a, float b)
{
struct Complex* complex = malloc(sizeof(struct Complex));
if(complex == NULL)
{
return NULL; // out of memory
}
complex->imag = a;
complex->real = b;
return complex;
}
Наконец, у меня есть функция, которая должна поместить новое комплексное число в самую первую позицию массива комплексных чисел
int attach(struct Complex *complexArray, struct Complex complex, int length)
{
int i;
for(i = length; length > 0; i--)
{
complexArray[i] = complexArray[i - 1];
}
complexArray[i] = complex;
length++;
return length;
}
Основная функция выглядит следующим образом
int main()
{
float a = 3.6;
float b = 6.8;
struct Complex* complex = instanceOfComplex(a, b);
printf("%f %f\n", complex->imag, complex->real);
int length = 4;
struct Complex* complexArray = malloc(sizeof(length + 1) * sizeof(struct Complex));
complexArray[0] = *instanceOfComplex(8.2, 9.3);
complexArray[1] = *instanceOfComplex(7.1, 4.6);
complexArray[2] = *instanceOfComplex(0.1, 2.7);
complexArray[3] = *instanceOfComplex(5.6, 1.9);
attach(complexArray, *complex, length);
}
Итак, наконец, массив должен содержать 5 элементов комплексных чисел, где новое комплексное число находится в позиции complexArray [0], а остальные 4 элемента являются следующими элементами.
Проблема в главной функции, потому что все элементы удерживаются (8.2, 9.3). Может кто-нибудь сказать мне, что здесь не так?