Olocaçao dinamica de matriz e verificacao de quadrado magico.

326 palavras 2 páginas
// Tabalho da disciplina Projeto de Algoritimos

#include
#include

int main() { FILE *input = fopen("matriz.txt", "r"); if (input == NULL) { printf("Falha na abertura de arquivo: matriz.txt"); return 0; } FILE *saida = fopen("resultado.txt", "w"); if (saida == NULL) { printf("Falha na abertura de arquivo: resultado.txt"); return 0; } int dim, **matriz, i, j; int quadrado_magico(int **matriz, int dim);

// Entrada // Leitura da dimensão, alocação de memória e leitura da matriz fscanf(input, "%d", &dim); matriz = (int**)malloc(sizeof(int*)*dim); if (matriz == NULL) { printf("Falha na alocacao de memoria"); return 0; } for(i=0; i < dim; i++) { matriz[i] = (int*)malloc(sizeof(int)*dim); for(j=0; j < dim; j++) fscanf(input, "%d", &matriz[i][j]); }

// Saida // O teste de quadrado mágico e feito pela função de mesmo nome // A transposição é feita através da impressão direta no arquivo saida trocando-se i,j por j,i. fprintf(saida, "Quadrado mágico: %s\n", quadrado_magico(matriz,dim)? "Sim" : "Não" ); fprintf(saida, "Transposta:\n"); for(i=0; i < dim; i++) { for(j=0; j < dim-1; j++) fprintf(saida, "%d\t", matriz[j][i]); fprintf(saida, "%d\n", matriz[j][i]); }

// Liberação de memória e fechamento de arquivos for(i=0; i < dim; i++) free(matriz[i]); free(matriz); fclose(input); fclose(saida); return 1; }

int quadrado_magico(int **matriz, int dim) /* Função que testa se uma matriz quadrada é ou não um quadrado mágico, retornando 1 em caso afirmativo e 0 caso contrário. */ { int valor_magico = 0, aux1 = 0, aux2 = 0, i, j;

for(i=0; i < dim; i++) { aux1 +=

Relacionados