Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Коробейников
- Лаба 10
- Вариант-45.
- Дана целочисленная матрица {Aij}i=1...n;j=1..n , n<=100. Если суммы цифр минимального и максимального элементов матрицы отличаются не более, чем на 3, упорядочить столбцы матрицы по неубыванию произведения элементов. Использовать процедуры и функции!
- */
- #include <iostream>
- #include <cmath>
- using namespace std;
- int n;
- int mas[100][100];
- int mas_sum[100][2];
- void swap(int &x, int &y)
- {
- int tmp = x;
- x = y;
- y = tmp;
- }
- void sort(){
- for(int i = 0; i < n - 1; i++){
- for(int j = i + 1; j < n; j++){
- if(mas_sum[i][0] > mas_sum[j][0]) {
- swap(mas_sum[i][0], mas_sum[j][0]);
- swap(mas_sum[i][1], mas_sum[j][1]);
- }
- }
- }
- }
- int sum_of_numbers(int a){
- int sum = 0;
- while(a > 9) {
- sum += a % 10;
- a /= 10;
- }
- sum += a;
- return sum;
- }
- int main(){
- cin >> n;
- int min_element = INT_MAX;
- int max_element = INT_MIN;
- for(int i = 0; i < n; i++){
- for(int j = 0; j < n; j++){
- cin >> mas[i][j];
- min_element = min(min_element, mas[i][j]);
- max_element = max(max_element, mas[i][j]);
- }
- }
- if(abs(sum_of_numbers(max_element) - sum_of_numbers(min_element)) > 3)
- return 0;
- for(int i = 0; i < n; i++){
- int sum_now = 0;
- for(int j = 0; j < n; j++){
- sum_now += mas[j][i];
- }
- mas_sum[i][0] = sum_now;
- mas_sum[i][1] = i;
- }
- sort();
- int mas1[100][100];
- for(int i = 0; i < n; i++){
- for(int j = 0; j < n; j++){
- mas1[j][i] = mas[j][mas_sum[i][1]];
- }
- }
- for(int i = 0; i < n; i++){
- for(int j = 0; j < n; j++){
- cout << mas1[i][j] << " ";
- }
- cout << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement