Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- /*A ideia é criar um programa que recebe uma matriz de tamanho definido pelo usuário, e que determine
- e imprima a transposta dessa matriz.*/
- main(){
- int i,j,m,n,matriz[100][100],aux[100][100],numelementos;
- /*Perguntar ao usuário a ordem da matriz*/
- puts("Entre com o numero de linhas da matriz\n");
- scanf("%d",&m);
- puts("\n");
- puts("Entre com o numero de colunas da matriz\n");
- scanf("%d",&n);
- puts("\n");
- puts("---------------------------");
- /*Se a ordem desejada ultrapassar o limite de ordem da matriz, devemos cancelar a operação e pedir
- novamente para digitar uma ordem*/
- while(m*n>10000||m*n<=0){
- puts("Ordem digitada nao se encaixa nos limites de ordem. Digite uma nova ordem:\n");
- puts("Entre com o numero de linhas da matriz\n");
- scanf("%d",&m);
- puts("\n");
- puts("Entre com o numero de colunas da matriz\n");
- scanf("%d",&n);
- puts("\n");
- puts("---------------------------");}
- puts("\n");
- numelementos=m*n;
- printf("A sua matriz possui %d elementos.\n",numelementos);
- puts("\n");
- puts("Entre com os valores da matriz:\n");
- for(i=0;i<m;i++){
- for(j=0;j<n;j++)
- scanf("%d",&matriz[i][j]);
- }
- puts("\n");
- puts("---------------------------");
- /*Imprimamos a matriz inicial*/
- puts("Essa eh a matriz digitada inicialmente:\n");
- for(i=0;i<m;i++){
- puts("\n");
- for(j=0;j<n;j++)
- printf("%d ",matriz[i][j]);
- puts("\n");
- }
- puts("\n");
- puts("---------------------------");
- /*Na determinação da transposta, devemos definir que a matriz auxiliar também possui a mesma ordem da matriz principal*/
- /*Determinação da transposta*/
- /*Primeiro zeramos a auxiliar*/
- aux[n][m]=0;
- /*Devemos igualmente definir os índices da auxiliar, pois se a zeramos, certamente algum valor será zero, e não haverá
- congruência com o valor correspondente da primeira matriz. Elas devem ter o mesmo tamanho.*/
- /*Não precisamos redefinir os índices da primeira matriz porque no recebimento de dados, ela só vai ser operada até o limite
- dos ord e ord2 determinados. No caso da auxiliar, ela já recebe todos os seus valores como 0, e só depois deverá ser reordenada.*/
- /*Agora determinamos ela:*/
- for(i=0;i<n;i++){
- for(j=0;j<m;j++)
- aux[i][j]=matriz[j][i];
- }
- /*Agora imprimimos a matriz aux na tela, no caso, a transposta:*/
- puts("Essa eh a matriz transposta da matriz inicial:\n");
- for(i=0;i<n;i++){
- puts("\n");
- for(j=0;j<m;j++)
- printf("%d ",aux[i][j]);
- puts("\n");
- }
- puts("\n");
- puts("---------------------------");
- puts("FIM");
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement