Составить программу в языке Си Даны размерность квадратной матрицы и сама матрица целых чисел.
Отсортировать по возрастанию элементы матрицы на побочной диагонали. (в правом верхнем углу матрицы стоит наименьший элемент) Вывести полученную матрицу на экран. Заранее Спасибо.Ответы на вопрос
Ответ:
#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
