Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 08.05.2024
Сообщений: 2

Функция, которая упорядочивает по убыванию элементы диагонали, находящейся над главной диагональю

08.05.2024, 01:28. Показов 7244. Ответов 4
Метки си (Все метки)

Студворк — интернет-сервис помощи студентам
С помощью функции упорядочить по убыванию элементы диагонали, находящейся над главной диагональю (вывести на экран исправленную матрицу)
например, дана матрица:
1 2 3 6
1 2 4 8
1 2 4 9
4 5 6 7
после выполнения пункта г, на экране должна отобразиться матрица:
1 9 3 6
1 2 4 8
1 2 4 2
4 5 6 7
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.05.2024, 01:28
Ответы с готовыми решениями:

Заменить элементы, стоящие над главной диагональю, симметричными относительно главной диагонали
Сделать следующее преобразование матрицы A(n,n): заменить элементы, стоящие над главной диагональю, им симметричны относительно главной...

Дана матрица А(п*п). Заменить элементы главной диагонали нулями, а элемен-ты, стоящие над главной диагональю - единицами
Дана матрица А(п*п). Заменить элементы главной диагонали нулями, а элемен-ты, стоящие над главной диагональю - единицами. вот мой...

Вычислить сумму элементов матрицы над главной диагональю под главной диагональю и на главной диагонали
Даны матрицы А(4,3) и В(3,5). Для каждой матрицы вычислить сумму элементов над главной диагональю под главной диагональю и на главной...

4
Заблокирован
08.05.2024, 09:04
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
 
//упорядочивание элементов по убыванию
void sortDescending(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] < arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
 
int main() {
    int n = 4;
    int matrix[4][4] = {
        {1, 2, 3, 6},
        {1, 2, 4, 8},
        {1, 2, 4, 9},
        {4, 5, 6, 7}
    };
 
    //сохраняем элементы диагонали в массив
    int diagonalElements[n - 1];
    int index = 0;
    for (int i = 0; i < n - 1; i++) {
        diagonalElements[index++] = matrix[i][i + 1];
    }
 
    //упорядочиваем элементы диагонали по убыванию
    sortDescending(diagonalElements, index);
 
    //перезаписываем элементы диагонали в матрице
    index = 0;
    for (int i = 0; i < n - 1; i++) {
        matrix[i][i + 1] = diagonalElements[index++];
    }
    printf("Исправленная матрица:\n");
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
}
0
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,310
21.05.2024, 13:25
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#define N 4
 
void printf_arr (int [][N], int);
void sort_array (int [][N], int);
 
int main (void) {
    int a[N][N] = { {1, 2, 3, 6}, {1, 2, 4, 8}, {1, 2, 4, 9}, {4, 5, 6, 7} };
 
    printf_arr(a, N);
    sort_array(a, N);
    printf_arr(a, N);
    return 0;
}
// -------------------------------------------------------------
void printf_arr (int a[][N], int size) {
    for (int i = 0; i < size; i++, puts(""))
        for (int k = 0; k < size; k++)
            printf("%3d", a[i][k]);
    puts("");
}
// -------------------------------------------------------------
void sort_array (int a[][N], int size) {
    int swapped = 0;
    for (int i = 1, k = 2; k < size; i = k++, swapped = 0) {
        if (a[i-1][i] < a[k-1][k]) {
            int t = a[i-1][i];              // swap(a[i-1][i], a[k-1][k])
            a[i-1][i] = a[k-1][k];
            a[k-1][k] = t;
            swapped = 1;
        }
        if (swapped)
            i = 0, k = 1;
    }
}
// -------------------------------------------------------------
1
14 / 12 / 2
Регистрация: 22.02.2024
Сообщений: 36
22.05.2024, 14:49
stake-k26, в функции sort_array выкинуть swapped и 30 строкой сделать i = 0, k = 1;
1
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,310
22.05.2024, 17:29
nominant, да, вы правы. Изначально использовал вложенный цикл, потом решил сократить до обычного цикла, а хвост остался. Поправил:
C
1
2
3
4
5
6
7
8
9
void sort_array (int a[][N], int size) {
    for (int i = 1, k = 2; k < size; i = k++)
        if (a[i-1][i] < a[k-1][k]) {
            int t = a[i-1][i];              // swap(a[i-1][i], a[k-1][k])
            a[i-1][i] = a[k-1][k];
            a[k-1][k] = t;
            i = 0, k = 1;
        }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.05.2024, 17:29
Помогаю со студенческими работами здесь

Заменить элементы,расположенные над главной диагональю массива единицами,а под главной диагональю-нулями(Н=К)
Заменить элементы,расположенные над главной диагональю массива единицами,а под главной диагональю-нулями(Н=К) прогу и блок схему напишите...

Напечатать все элементы, расположенные над главной диагональю матрицы вместе с элементами диагонали по строкам
Матрица А(n,n) хранится в одномерном массиве по строкам.Напечатать все элементы, расположенные над главной диагональю матрицы вместе с...

«Разорвать» матрицу по главной диагонали, записав в другой файл сначала элементы, находящиеся над диагональю
Есть задача, которую не могу решить - помогите пожалуйста. Заранее благодарен :) 1. В текстовом файле хранится квадратная...

Заполнить матрицу А(7х8) следующим образом: на главной диагонали – «0», над диагональю – «1», под диагональю – «-1».
Заполнить матрицу А(7х8) следующим образом: на главной диагонали – «0», над диагональю – «1», под диагональю – «-1».

Вычислить четыре суммы: элементов на главной диагонали, на побочной, над главной и под главной диагональю
1. сформировать двумерный массив размером 4х4 с помощью функции random из промежутка и вывести на экран. Вычислить четыре суммы: элементов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru