Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2013, 06:28   #1
CRazY-LeMoN
Новичок
Джуниор
 
Регистрация: 04.03.2013
Сообщений: 1
Вопрос Сортировка столбцов матрицы(C++)

По заданию нужно отсортировать столбцы матрицы в порядке возрастания сумм положительных элементов столбцов.
Например матрица:
2 4 1
2 5 1
0 -7 -1
Должно получиться:
1 2 4
1 2 5
-1 0 -7
Код:
#include <iostream>
#include <conio.h>
using namespace std;
 
void main()
{ setlocale(LC_ALL, "");
 int i,j, n, m, buf; 
 cout<<"Количество строк массива: ";
 cin>>n;
 system("cls");
 cout<<"Количество столбцов: ";
 cin>>m;
 system("cls");
 int **mas=new int *[n];
 for(i=0; i<n;i++)
 mas[i]=new int [m];
 for(i=0;i<n;i++)
 { for(j=0;j<m;j++)
    { cout<<"["<<i<<"]["<<j<<"] = ";
      cin>>mas[i][j];
      system("cls");
     }
  }
 cout<<"Введен массив: ";
   for(i=0; i<n; i++)
    { cout << "\n";
      for (j=0; j<m; j++)
      cout << "\t" << mas[i][j];
    } 
 cout<<endl<<endl;
 
 int *sum, g,s;   //создание массива с суммой элементов столбца
 sum=new int[m]; //
 for(g=0;g<m;g++)//
    sum[g]=0;   //\\
 
 for(j=0;j<m;j++)        //заполнение массива суммой элементов столбца по условию
 {  s=0;                //
     for(i=0;i<n;i++)  //
      { if(mas[i][j]>0)//
        s=s+mas[i][j];//
       }              //
     sum[j]=s;       //
   }                //\\
 
 cout<<"Сумма положительных элементов столбцов введенного массива: "<<endl;
  for(i=0;i<m;i++)
     cout<<"\t"<<sum[i];
 cout<<endl<<endl;
    
for (g=1; g<m; g++)          //сортировка столбцов исходного массива по условию увеличения суммы элементов столбца
 { for(j=0;j<m;j++)          //(не знаю как делать)
     for(i=0; i<m-g; i++)    //
   {if(sum[i]>sum[i+1])      //
    {                       //
       {buf=mas[i][j];      //
       int bufs=sum[i];      //
       mas[i][j]=mas[i][j+1]; //
       sum[i]=sum[i+1];      //
       mas[i][j+1]=buf;      //
       sum[i+1]=bufs;       //
        }                  //
      }                   //
     }                   //
   }                   //\\
      
 cout<<"Упорядоченная сумма положительных элементов столбцов введенного массива: "<<endl;
  for(i=0;i<m;i++)
     cout<<"\t"<<sum[i];
 cout<<endl<<endl;
 
cout<<"Массив, после перестановки столбцов"<<endl<<"в порядке возрастания сумм положительных элементов столбцов:"<<endl;
 for(int i=0; i<n; i++)                               
   {
     cout<<"\n";
     for (int j=0; j<m; j++)
     cout<< "\t" << mas[i][j];
    }
getch();
}
но моего гуманитарного мозга не хватает для того, что бы переставить столбцы по условию увеличения суммы элементов столбцов.
помогите
CRazY-LeMoN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка столбцов двумерной матрицы DrPsych Visual C++ 1 05.01.2012 01:05
вывод номеров столбцов матрицы и подсчитать количество этих столбцов Vitalina69 Помощь студентам 2 15.02.2011 21:52
Матрицы:функция изменения порядка столбцов матрицы Fajyz Помощь студентам 0 13.01.2010 09:40
Сортировка столбцов сатрицы Noooob Помощь студентам 0 28.10.2009 15:15
Сортировка столбцов в матрице WhistlerW Общие вопросы Delphi 3 12.06.2009 23:01