Сортировка столбцов матриц
Добавлено: 12 июн 2015, 01:16
Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик. Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент.
(Как отсортировать столбцы без индексов?)
#include "stdafx.h"
#include "math.h"
#include "conio.h"
#include "iostream"
using namespace std;
void main()
{
int a[20][20]={0},i,j,ch[20]={0},tmp,index[20],sam=0,st=0,m,n;
cout<<"vvedite razmernost\n"<<endl;
cin>>n>>m;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cin>>a[j];
}
}
cout<<"\n\n";
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if (a[j]<0 && a[j]%2)
{
ch[j]+=abs(a[j]);
}
printf("%4d ",a[j]);
index=i;}
cout<<endl;
}
for(i=0;i<n-1;i++)
for(j=i+1;j<m;j++)
if (ch[index[j]]<ch[index])
{
tmp=index[j];
index[j]=index;
index=tmp;
}
cout<<endl;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%4d ",a[index[j]]);
}
cout<<endl;
}
cout<<endl;
for(int j=0;j<m;j++)
{
sam=0;
for(int i=0;i<n;i++)
{
if(a[i][j]<0&&abs(a[i][j])%2==1)
{
sam+=abs(a[i][j]);
}
}
cout<<"stolbec : "<<j<<" summa "<<sam<<endl;
}
for(int j=0;j<m;j++)
{st=0;
for(int i=0;i<n;i++)
{
if(a[i][j]<0)
{
for(int i=0;i<n;i++)
{
st+=a[i][j];
}
break;
}
}
cout<<"\n Stolbec : "<<j<<" Summa "<<st; }
_getch();
}
(Как отсортировать столбцы без индексов?)
#include "stdafx.h"
#include "math.h"
#include "conio.h"
#include "iostream"
using namespace std;
void main()
{
int a[20][20]={0},i,j,ch[20]={0},tmp,index[20],sam=0,st=0,m,n;
cout<<"vvedite razmernost\n"<<endl;
cin>>n>>m;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cin>>a[j];
}
}
cout<<"\n\n";
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if (a[j]<0 && a[j]%2)
{
ch[j]+=abs(a[j]);
}
printf("%4d ",a[j]);
index=i;}
cout<<endl;
}
for(i=0;i<n-1;i++)
for(j=i+1;j<m;j++)
if (ch[index[j]]<ch[index])
{
tmp=index[j];
index[j]=index;
index=tmp;
}
cout<<endl;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%4d ",a[index[j]]);
}
cout<<endl;
}
cout<<endl;
for(int j=0;j<m;j++)
{
sam=0;
for(int i=0;i<n;i++)
{
if(a[i][j]<0&&abs(a[i][j])%2==1)
{
sam+=abs(a[i][j]);
}
}
cout<<"stolbec : "<<j<<" summa "<<sam<<endl;
}
for(int j=0;j<m;j++)
{st=0;
for(int i=0;i<n;i++)
{
if(a[i][j]<0)
{
for(int i=0;i<n;i++)
{
st+=a[i][j];
}
break;
}
}
cout<<"\n Stolbec : "<<j<<" Summa "<<st; }
_getch();
}