Pagini recente » Cod sursa (job #628471) | Cod sursa (job #1847468) | Cod sursa (job #1923229) | Cod sursa (job #1071811) | Cod sursa (job #119224)
Cod sursa(job #119224)
#include <stdio.h>
#include <stdlib.h>
#define MAX 15
#define MAXLEN 1024
#define FLIP_IN "flip.in"
#define FLIP_OUT "flip.out"
void afisare_matrice();
int ment[MAX][MAX]; // matricea cul
int n, m; // n linii, m coloane
int main(void){
int i, j;
FILE *fp;
char line[MAXLEN];
int inv_l=0;
int inv_c=0;
if ((fp = fopen(FLIP_IN, "r")) == NULL) {
printf("nu pot deschide %s\n", FLIP_IN);
exit(1);
}
// citim N SI M DAAAAAAAAAAAAAAAAAa
fgets(line, MAXLEN, fp);
if(!(sscanf(line, "%d %d", &n, &m) > 0)) {
printf("nu gasesc n/m in %s\n", FLIP_IN);
exit(1);
}
// incepem sa citim matricea NEGRULE W00T!
for(i=0; i<n; i++){
for(j=0; j<m; j++){
int value;
if(fscanf(fp, "%d", &value) != 1){
break;
}
ment[i][j] = value;
}
}
fclose(fp); // am terminat cu FLIP_IN
int S;
// testam pa linii sumele etc
linii_begin:
for(i=0; i<n; i++){
inv_l=0;
S=0;
for(j=0; j<m; j++) S+= ment[i][j];
if(S<0){
for(j=0; j<m; j++) ment[i][j] = ~ment[i][j]+1;
inv_l=1;
}
//if(inv_l) break;
}
// testam pa coloane
for(j=0; j<m; j++){
inv_c=0;
S=0;
for(i=0; i<n; i++) S+= ment[i][j];
if(S<0){
for(i=0; i<n; i++) ment[i][j] = ~ment[i][j]+1;
inv_c=1;
}
if(inv_c) break;
}
if(inv_c) goto linii_begin;
int Suma=0;
for(i=0; i<n; i++){
for(j=0; j<m; j++){
Suma+= ment[i][j];
}
}
if ((fp = fopen(FLIP_OUT, "w")) == NULL) {
printf("nu pot crea/scrie in %s\n", FLIP_OUT);
exit(1);
}
fprintf(fp, "%d\n", Suma);
fclose(fp); // am terminat si cu FLIP_OUT
return 0;
}