Андрей
Высший разум
(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], только то, что надо сортировать, по твоему мнению. а если сортировать не надо, то и ничего не выводиться на экран
Условие: отсортировать элементы главной диагонали матрицы.
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}};