Pagini recente » Cod sursa (job #2424253) | Cod sursa (job #2588409) | Sandbox (cutiuţa cu năsip) | Cod sursa (job #2945215) | Cod sursa (job #2195065)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void readFile(short &m, short &n, int ** &matrix) {
ifstream in;
in.open("flip.in");
if (in.fail()) {
cerr << "Cannot open this file";
exit(1);
}
in >> m;
in >> n;
if (m < 1 && n < 1 && m > 16 && n > 16) {
cerr << "Wrong data format";
exit(2);
}
matrix = new int *[m];
for (int i = 0; i < m; ++i)
matrix[i] = new int[n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
in >> matrix[i][j];
}
}
in.close();
}
void controlEdit(short &m, short &n, int ** &matrix) {
// compute row sum
for (int i = 0; i < m; i++) {
int normalSum = 0;
for (int j = 0; j < n; j++)
normalSum += matrix[i][j];
int reverseSum = 0;
for (int j = 0; j < n; j++)
reverseSum += -matrix[i][j];
if (normalSum < reverseSum)
for (int j = 0; j < n; j++)
matrix[i][j] = -matrix[i][j];
}
// compute column sum
for (int j = 0; j < n; j++) {
int normalSum = 0;
for (int i = 0; i < m; i++)
normalSum += matrix[i][j];
int reverseSum = 0;
for (int i = 0; i < m; i++)
reverseSum += -matrix[i][j];
if (normalSum < reverseSum)
for (int i = 0; i < m; i++)
matrix[i][j] = -matrix[i][j];
}
}
int getSum(short m, short n, int ** matrix) {
int sum = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
sum += matrix[i][j];
}
}
return sum;
}
int main() {
short m, n;
int **matrix;
readFile(m, n, matrix);
controlEdit(m, n, matrix);
ofstream out;
out.open("flip.out");
if(out.is_open()) {
out << getSum(m, n, matrix);
} else {
cerr << "Cannot create and open file.";
exit(3);
}
return 0;
}