Переставить строки матрицы по убыванию произведения элементов строк - C (СИ)
Формулировка задачи:
Помогите написать. Задать значения элементов массива А (м х n) случайным образом. Упорядочить элементы по след. закону - переставить строки матрицы по убыванию произведений элементов строк. Заранее спасибо!
Решение задачи: «Переставить строки матрицы по убыванию произведения элементов строк»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define M 5 #define N 5 int main(void) { int arr[M]; int A[M][N];int i,j,temp,f; for(i=0;i<M;i++) { arr[i]=1; } srand(time(NULL)); printf("Исходный массив:\n\n"); for(i=0;i<M;i++) { for(j=0;j<N;j++) { A[i][j]=rand()%5+1; printf("%d ",A[i][j]); } printf("\n"); } printf("\n"); for(i=0;i<M;i++) { for(j=0;j<N;j++) { arr[i]*=A[i][j]; } } for(i=0;i<M;i++) { for(f=0;f<M;f++) { if(arr[i+1]>arr[i]) { for(j=0;j<M;j++) { temp = A[i][j]; A[i][j]=A[i+1][j]; A[i+1][j]=temp; } temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } } } printf("Получившийся массив:\n\n"); for(i=0;i<M;i++) { for(j=0;j<N;j++) { printf("%d ",A[i][j]); } printf("\n"); } return 0; }
Объяснение кода листинга программы
- Подключаются необходимые библиотеки
- Определяются размеры матрицы
- Инициализируется массив arr с единицами
- Инициализируется матрица A случайными числами от 1 до 6
- Перебираются строки матрицы A, произведение элементов каждой строки сохраняется в переменной arr
- Перебираются строки матрицы A, если произведение элементов следующей строки больше текущего, выполняется перестановка строк
- Выводится полученная матрица
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д