Matriza Dinamica
1a Trabalho
Linguagem C
23 de agosto de 2013
Atividade: Desenvolver um programa, em Linguagem C, capaz de adquirir uma matriz quadrada (nxn) proveniente de um arquivo de texto, verificar se essa representa um “quadrado mágico” e por fim transpor a matriz. O resultado deve ser salvo em um arquivo de saída. O programa deve lidar com matrizes de tamanhos (n) arbitrários, ou seja, matrizes alocadas dinamicamente.
1
Matriz “quadrado mágico” e transposta
Uma matriz quadrada inteira é chamada de “quadrado mágico” se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundária são todos iguais. Exemplo: A matriz abaixo representa um quadrado mágico:
8 0 7
4 5 6
M =
3 10 2
A transposição é uma transformação capaz de levar uma matriz A noutra matriz, AT , tal que aT = aj,i , onde aT e aj,i representam, respectivamente, os elementos das matrizes AT e A. i,j i,j
Ou seja, a transposição troca linhas por colunas e vice-versa.
2
Input e Output
O programa deve abrir (fopen) um arquivo chamado matriz.txt, que conterá a matriz a ser analisada e transposta e estará localizado junto ao programa (na mesma pasta). Cuidado para não especificar nenhum diretório para o arquivo, do contrário o caso de teste durante a correção do trabalho poderá não funcionar. Especificar, em fopen, apenas o nome do arquivo
("matriz.txt"), sem diretório.
A matriz conterá somente números inteiros (int). Sua representação no arquivo de texto deve ser da seguinte forma. Na primeira linha, são informadas as dimensões (n) da matriz, ou seja, o número de linhas e colunas. A partir da segunda linha, têm-se os elementos da matriz, linha a linha. Por exemplo, dado a matriz M , o arquivo deve representá-la da seguinte forma
("matriz.txt"):
1
3
807
456
3 10 2
O resultado da análise e transposição da matriz deve ser gravado noutro arquivo