Pagini recente » Cod sursa (job #2328707) | Cod sursa (job #1152225)
#include<fstream>
using namespace std;
int a[16][16],n,m;
void citire()//functia de citire
{
ifstream f("flip.in");
f>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
f>>a[i][j];
f.close();
}
int sumLin(int a[16][16], int idLin, int nrCol)//functia calculeaza suma de pe linie
{
int s=0;
for(int i=0; i<nrCol; i++)
s+=a[idLin][i];
return s;
}
int sumMat(int a[16][16], int nrLin, int nrCol)//functia calculeaza suma matricii
{
int s=0;//s retine suma de pe fiecare linie
for(int i=0; i<nrLin; i++)
s+=sumLin(a, i, nrCol);
return s;
}
int sumCol(int a[16][16], int idCol, int nrLin)//functia calculeaza suma de pe coloana
{
int s=0;
for(int i=0; i<nrLin; i++)
s+=a[i][idCol];
return s;
}
void comuta(int a[16][16], char mod, int id, int nr)
{
switch(mod)
{
case 'l': for(int i=0;i<nr;i++) a[id][i]=-a[id][i]; break;
case 'c': for(int i=0;i<nr;i++) a[i][id]=-a[i][id]; break;
default: break;
}
}
void parcL()
{
for(int i=0;i<n;i++)//parcurg matricea pe linii
{
//int S;//in S retin suma elementelor matricii
//S=sumMat(a,n,m);
if(sumLin(a,i,m)<0) comuta(a,'l',i,m);
//if(S<sumMat(a,n,m)) comuta(a,'l',i,m);
}
}
void parcC()
{
for(int i=0;i<m;i++)//parcurg matricea pe coloane
{
//int S;//in S retin suma elementelor matricii
//S=sumMat(a,n,m);
if(sumCol(a,i,n)<0) comuta(a,'c',i,n);
//if(S<sumMat(a,m,n)) comuta(a,'c',i,n);
}
}
int main()
{
ofstream g("flip.out");
citire();//citirea din fisier(m, n si matricea)
parcL();
parcC();
g<<sumMat(a,n,m);
g.close();
return 0;
}