
Составить программу в языке Си Даны размерность квадратной матрицы и сама матрица целых чисел.
Отсортировать по возрастанию элементы матрицы на побочной диагонали. (в правом верхнем углу матрицы стоит наименьший элемент) Вывести полученную матрицу на экран. Заранее Спасибо.

Ответы на вопрос

Ответ:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
main()
{
setlocale(0,"");
srand(time(NULL));
int size;
printf("Введите размер квадратной матрицы: ");
scanf("%d", &size);
int arr[100][100];
for(int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
arr[i][j] = rand() % 100 - 30;
printf("%d\t", arr[i][j]);
}
printf("\n");
}
for(int j = 0; j < size - 1; j++)
{
for(int i = j + 1; i < size; i++)
{
if (arr[j][size - j - 1] > arr[i][size - i - 1])
{
int temp = arr[j][size - j - 1];
arr[j][size - j - 1] = arr[i][size - i - 1];
arr[i][size - i - 1] = temp;
}
}
}
printf("\n");
for(int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
printf("%d\t", arr[i][j]);
}
printf("\n");
}
}
Объяснение:
Максимальный размер матрицы - 100х100
#include <stdio.h> // Библиотека ввода - вывода
#include <stdlib.h> // Библиотека для рандома
#include <locale.h> // Библиотека для локализации
#include <time.h> // Библиотека для работы со временем
main()
{
setlocale(0,""); // Локализация
srand(time(NULL)); // Обнуление времени (каждый раз новые числа)
int size; // Целочисленная переменная для хранения размера квадратной матрицы
printf("Введите размер квадратной матрицы: "); // Вывод сообщения в консоль
scanf("%d", &size); // Ввод размера матрицы с клавиатуры
int arr[100][100]; // Создание матрицы
for(int i = 0; i < size; i++) // Идём по матрице
{
for (int j = 0; j < size; j++) // Идём по матрице
{
arr[i][j] = rand() % 100 - 30; // Заполнение матрицы случайными числами
printf("%d\t", arr[i][j]); // Вывод
}
printf("\n"); // Перенос на следующую строку
}
for(int j = 0; j < size - 1; j++) // Идём по матрице
{
for(int i = j + 1; i < size; i++) // Идём по матрице
{
if (arr[j][size - j - 1] > arr[i][size - i - 1]) // Если элемент побочной диагонали больше последующего элемента побочной диагонали
{
int temp = arr[j][size - j - 1]; // Перестановка
arr[j][size - j - 1] = arr[i][size - i - 1]; // Перестановка
arr[i][size - i - 1] = temp; // Перестановка
}
}
}
printf("\n"); // Перенос на следующую строку
for(int i = 0; i < size; i++) // Идём по матрице
{
for (int j = 0; j < size; j++) // Идём по матрице
{
printf("%d\t", arr[i][j]); // Вывод
}
printf("\n"); // Перенос на следующую строку
}
}



Конечно, вот пример программы на языке C, которая выполняет указанную задачу:
c#include <stdio.h>
// Функция для сортировки массива методом пузырька
void bubbleSort(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;
printf("Введите размерность квадратной матрицы: ");
scanf("%d", &n);
int matrix[n][n];
printf("Введите элементы матрицы:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
// Получение элементов побочной диагонали
int diagonalElements[n];
for (int i = 0; i < n; i++) {
diagonalElements[i] = matrix[i][n - i - 1];
}
// Сортировка элементов побочной диагонали
bubbleSort(diagonalElements, n);
// Возвращение отсортированных элементов на побочную диагональ
for (int i = 0; i < n; i++) {
matrix[i][n - i - 1] = diagonalElements[i];
}
// Вывод полученной матрицы
printf("Матрица после сортировки на побочной диагонали:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
Скопируйте этот код в файл с расширением .c
и скомпилируйте его с помощью компилятора C, чтобы выполнить программу. Программа попросит вас ввести размерность матрицы и её элементы, затем выведет матрицу после сортировки на побочной диагонали.


Похожие вопросы

Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili