Отсортировать столбцы в массиве, согласно их найденному произведению - C (СИ)
Формулировка задачи:
Задание: Дан массив 7х7, необходимо отсортировать столбцы массива по возрастанию их произведения.
То есть: Вычисляется произведение элементов каждого из семи столбцов. Найденные значения сортируются в порядке возрастания, а вместе с тем, должны меняться местами и столбцы.
Нахожу произведения столбцов и сортирую их, а как дальше реализовать код - не знаю. Очевидно, что можно связать массив из произведений с определёнными столбцами и вывести получившийся массив, но как это написать? Нужна Ваша помощь.
Заранее благодарю
#include <conio.h> #include <stdlib.h> #include <time.h> #include <iostream> int main() { const int N = 7; int i, j, k, abuf, bbuf, b[N]; int a[N][N]; srand (time(NULL)); printf ( "\n Array 7x7 \n \n" ); for( j = 0; j < N; j++ ) for( i=0; i < N; i++ ) a[i][j] = rand()%18+(-9); for( j = 0; j < N ; j++ ) { for( i = 0; i < N ; i++ ) printf( "%3d\t", a[i][j] ); printf( "\n" ); } for( i = 0 ; i < N ; i++ ) { k = 1; for( j = 0 ; j < N ; j++ ) { k = k * a[i][j]; b[i] = k; } printf( "b = %d\n", b[i] ); } for( i = 0 ; i < N ; i++ ) { for ( j = N - 1 ; j > i ; j-- ) { if ( b[j - 1] > b[j]) { bbuf = b[j - 1]; b[j - 1] = b[j]; b[j] = bbuf; } } printf( "\nb = %d", b[i] ); } getch(); return 0; }
Решение задачи: «Отсортировать столбцы в массиве, согласно их найденному произведению»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int main() { const int N = 7; int i, j, k, bbuf, b[N], buff[N]; int a[N][N]; srand(time(NULL)); for (j = 0; j < N; j++) { for (i = 0; i < N; i++) { a[i][j] = rand() % 18 + (-9); } } printf("\n Array 7x7 \n \n"); for (j = 0; j < N ; j++) { for (i = 0; i < N ; i++) { printf("%3d\t", a[i][j]); } printf("\n"); } printf("\n"); for (i = 0 ; i < N ; i++) { k = 1; for (j = 0 ; j < N ; j++) { k = k * a[i][j]; b[i] = k; } printf("b = %d\n", b[i]); } printf("\n"); for (i = 0 ; i < N ; i++) { for (j = N - 1 ; j > i ; j--) { if (b[j - 1] > b[j]) { bbuf = b[j - 1]; b[j - 1] = b[j]; b[j] = bbuf; memcpy(buff, a[j - 1], sizeof(buff)); memcpy(a[j - 1], a[j], sizeof(buff)); memcpy(a[j], buff, sizeof(buff)); } } printf("b = %d\n", b[i]); } for (j = 0; j < N ; j++) { for (i = 0; i < N ; i++) { printf("%3d\t", a[i][j]); } printf("\n"); } system("pause"); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с массивами, временем и вводом-выводом
- Объявление переменных: N (размер массива), i, j, k, bbuf, b[N], buff[N], a[N][N] (массив размером NxN)
- Инициализация генератора случайных чисел с помощью функции srand(time(NULL))
- Заполнение матрицы a[N][N] случайными числами в диапазоне от -9 до 9 с помощью цикла for и функции rand()
- Вывод на экран заполненной матрицы с помощью цикла for и функции printf()
- Вычисление произведения элементов каждого столбца матрицы a[N][N] и сохранение результатов в массив b[N] с помощью цикла for
- Сортировка массива b[N] по возрастанию с помощью алгоритма сортировки пузырьком в цикле for
- Вывод на экран отсортированного массива b[N] с помощью цикла for и функции printf()
- Вывод на экран исходной матрицы a[N][N] с помощью цикла for и функции printf()
- Ввод с клавиатуры символа для продолжения работы программы с помощью функции system(
pause
) - Возврат 0, что означает успешное завершение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д