Pagini recente » Cod sursa (job #848873) | Cod sursa (job #162899) | Cod sursa (job #27129) | Cod sursa (job #3183889) | Cod sursa (job #3194725)
#include <stdio.h>
// Funcție pentru inversarea unei linii
void flipRow(int matrix[][100], int row, int cols) {
for (int i = 0; i < cols; i++) {
matrix[row][i] *= -1;
}
}
// Funcție pentru inversarea unei coloane
void flipCol(int matrix[][100], int col, int rows) {
for (int i = 0; i < rows; i++) {
matrix[i][col] *= -1;
}
}
// Funcție pentru afișarea matricei într-un fișier
void printMatrixToFile(FILE *outputFile, int matrix[][100], int rows, int cols) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
fprintf(outputFile, "%d ", matrix[i][j]);
}
fprintf(outputFile, "\n");
}
}
int main() {
FILE *inputFile, *outputFile;
int matrix[100][100];
int rows, cols;
// Deschiderea fișierului de intrare
inputFile = fopen("flip.in", "r");
if (inputFile == NULL) {
printf("Eroare la deschiderea fisierului de intrare.\n");
return 1;
}
// Citire dimensiuni
fscanf(inputFile, "%d %d", &rows, &cols);
// Citire elemente
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
fscanf(inputFile, "%d", &matrix[i][j]);
}
}
// Aplicarea operațiilor de inversare pentru a maximiza suma
for (int i = 0; i < rows; i++) {
if (matrix[i][0] < 0) {
flipRow(matrix, i, cols);
}
}
for (int j = 0; j < cols; j++) {
int negativeCount = 0;
for (int i = 0; i < rows; i++) {
if (matrix[i][j] < 0) {
negativeCount++;
}
}
if (negativeCount > rows / 2) {
flipCol(matrix, j, rows);
}
}
// Deschiderea fișierului de ieșire
outputFile = fopen("flip.out", "w");
if (outputFile == NULL) {
printf("Eroare la deschiderea fisierului de iesire.\n");
fclose(inputFile);
return 1;
}
// Afișarea tablei finale în fișierul de ieșire
printMatrixToFile(outputFile, matrix, rows, cols);
// Închiderea fișierelor
fclose(inputFile);
fclose(outputFile);
return 0;
}