Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не правильно сортирует элементы? (Си программирование) Кушает два элемента.

Ren Us Ученик (21), закрыт 1 год назад
Спасибо!
Условие: отсортировать элементы главной диагонали матрицы.
float B[4][4] = {{3.2,-1.2,0.18, -12.8},
{1.6,0.15,1.32,-3.5},
{-3.5, 14.3, 12.6, 1.6},
{12.8,2.18,0.2, 3.2}};
Лучший ответ
Андрей Высший разум (466108) 5 лет назад
Для сортировки диагонали НЕ НАДО создавать массив C.

for (int i = 3; i > 0; --i) {
for (int j = 0; j < i; ++i) {
if (B[j][j] > B[j + 1][j + 1]) {
float tmp = B[j][j];
B[j][j] = B[j + 1][j + 1];
B[j + 1][j + 1] = tmp;
}
}
}

И выводить результат надо ПОСЛЕ сортировки ОТДЕЛЬНЫМ циклом:

for (int i = 0; i < 4; ++i) {
printf("%f ", B[i][i]);
}

Но если тебе так хочется скопировать диагональ в C, то это делается ОДНИМ циклом:

for(int i = 0; i < 4; ++i) { C[i] = B[i][i]; }
Остальные ответы
johnsilver Просветленный (22598) 5 лет назад
так ты выводишь только те элементы, которые попадают под условие c[i]>c[j+1], только то, что надо сортировать, по твоему мнению. а если сортировать не надо, то и ничего не выводиться на экран
Ren UsУченик (21) 5 лет назад
а КАКОЕ УСЛОВИЕ ПОЙДЕТ. сПАСИБО
johnsilver Просветленный (22598) выводить надо все! элементы, без условий, и после сортировки.
Похожие вопросы