Имея
float leftArray[numberOfDatums/2];
float rightArray[numberOfDatums/2];
в
if (i >= numberOfDatums/2)
{
//leftArray SOMEHOW GETS CHANGED INSTEAD OF RIGHT ARRAY
rightArray[i] = dataValues[i];
вы выходите из rightArray и случайным образом записываете в leftArray (конечно, это неопределенное поведение)
должно быть
if (i >= numberOfDatums/2)
{
rightArray[i - numberOfDatums/2] = dataValues[i];
Кроме того, иметь
if (i < numberOfDatums/2)
{
...
}
if (i >= numberOfDatums/2)
с i без изменений бесполезно, второе , если может быть , еще , но также лучше сделать два для , чтобы не делать numberOfDatums/2
все время, просто чтобы решить, какой массив использовать.
Да, это действительно раздражает. Некоторое время я работал над этим, выполняя «сброс manage.py» в приложении contenttypes перед загрузкой фикстуры (чтобы избавиться от автоматически сгенерированных данных contenttypes, которые отличались от дампированной версии). Это сработало, но в конце концов мне надоели хлопоты и полностью отказаться от фикстур в пользу прямых SQL-дампов (конечно, тогда вы потеряете переносимость БД).
update - лучший ответ - использовать --natural
флаг для dumpdata
, как указано в ответе ниже. Этот флаг еще не существовал, когда я писал этот ответ.
Попробуйте пропустить типы содержимого при создании фикстуры:
./manage.py dumpdata --exclude contenttypes > fixture.json
Это сработало для меня в аналогичной ситуации с модульными тестами, ваше понимание типов содержимого действительно помогло!