Advertisement
apollw

transposta_qualquer_linhas

Mar 28th, 2014
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.58 KB | None | 0 0
  1. #include <stdio.h>
  2. /*A ideia é criar um programa que recebe uma matriz de tamanho definido pelo usuário, e que determine
  3. e imprima a transposta dessa matriz.*/
  4. main(){
  5.  
  6. int i,j,m,n,matriz[100][100],aux[100][100],numelementos;
  7.  
  8. /*Perguntar ao usuário a ordem da matriz*/
  9.  
  10. puts("Entre com o numero de linhas da matriz\n");
  11. scanf("%d",&m);
  12. puts("\n");
  13.  
  14. puts("Entre com o numero de colunas da matriz\n");
  15. scanf("%d",&n);
  16. puts("\n");
  17.  
  18. puts("---------------------------");
  19. /*Se a ordem desejada ultrapassar o limite de ordem da matriz, devemos cancelar a operação e pedir
  20. novamente para digitar uma ordem*/
  21.  
  22. while(m*n>10000||m*n<=0){
  23.     puts("Ordem digitada nao se encaixa nos limites de ordem. Digite uma nova ordem:\n");
  24.     puts("Entre com o numero de linhas da matriz\n");
  25. scanf("%d",&m);
  26. puts("\n");
  27.  
  28. puts("Entre com o numero de colunas da matriz\n");
  29. scanf("%d",&n);
  30. puts("\n");
  31.  
  32. puts("---------------------------");}
  33. puts("\n");
  34.  
  35. numelementos=m*n;
  36.  
  37. printf("A sua matriz possui %d elementos.\n",numelementos);
  38. puts("\n");
  39.  
  40. puts("Entre com os valores da matriz:\n");
  41. for(i=0;i<m;i++){
  42.     for(j=0;j<n;j++)
  43.         scanf("%d",&matriz[i][j]);
  44. }
  45. puts("\n");
  46. puts("---------------------------");
  47. /*Imprimamos a matriz inicial*/
  48.  
  49. puts("Essa eh a matriz digitada inicialmente:\n");
  50. for(i=0;i<m;i++){
  51.     puts("\n");
  52.     for(j=0;j<n;j++)
  53.         printf("%d   ",matriz[i][j]);
  54.     puts("\n");
  55. }
  56. puts("\n");
  57. puts("---------------------------");
  58. /*Na determinação da transposta, devemos definir que a matriz auxiliar também possui a mesma ordem da matriz principal*/
  59. /*Determinação da transposta*/
  60. /*Primeiro zeramos a auxiliar*/
  61.  
  62. aux[n][m]=0;
  63.  
  64. /*Devemos igualmente definir os índices da auxiliar, pois se a zeramos, certamente algum valor será zero, e não haverá
  65. congruência com o valor correspondente da primeira matriz. Elas devem ter o mesmo tamanho.*/
  66. /*Não precisamos redefinir os índices da primeira matriz porque no recebimento de dados, ela só vai ser operada até o limite
  67. dos ord e ord2 determinados. No caso da auxiliar, ela já recebe todos os seus valores como 0, e só depois deverá ser reordenada.*/
  68. /*Agora determinamos ela:*/
  69.  
  70. for(i=0;i<n;i++){
  71.     for(j=0;j<m;j++)
  72.         aux[i][j]=matriz[j][i];
  73. }
  74. /*Agora imprimimos a matriz aux na tela, no caso, a transposta:*/
  75.  
  76. puts("Essa eh a matriz transposta da matriz inicial:\n");
  77. for(i=0;i<n;i++){
  78.     puts("\n");
  79.     for(j=0;j<m;j++)
  80.     printf("%d   ",aux[i][j]);
  81.     puts("\n");
  82. }
  83. puts("\n");
  84. puts("---------------------------");
  85. puts("FIM");
  86.  
  87. system("pause");
  88. return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement