Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sora_ori en 16 Enero 2013, 12:43 pm



Título: Ayuda con matriz traspuesta
Publicado por: sora_ori en 16 Enero 2013, 12:43 pm
Buenas,

Estoy con el tema matrices y he llegado hacer una suma entre dos matrices, pero ahora me quedo estancando con el siguiente ejercicio de hacer una traspuesta y luego sumarla. A ver si alguien me puede echar una mano  :P


3. Un programa nos pide los elementos de una matriz 3x3 y nos escribe la matriz traspuesta y la suma de las dos matrices.



Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main() {
  5.  
  6. int f,c,num;
  7. int mat[3][3];
  8. int result[3][3];
  9. int traspuesta[3][3];
  10.  
  11. // matriz
  12.    for (f=0;f<3;f++){
  13.        for (c=0;c<3;c++){
  14.        printf("Escribe un numero para la matriz: (%d %d)",f,c);
  15.        scanf("%d",&mat);
  16.        mat[f][c]=num;
  17.        }
  18. }
  19.  
  20. // traspuesta
  21.    for (f=0;f<3;f++){
  22.        for (c=0;c<3;c++){
  23.  
  24.        }
  25. }
  26.  
  27.  
  28.  
  29. // resultado
  30.    for (f=0;f<3;f++){
  31.        for (c=0;c<3;c++){
  32.        result[f][c]=mat[f][c]+traspuesta[f][c];
  33.        }
  34. }
  35.  
  36.  
  37.  
  38.  
  39. // muestra la suma
  40.  
  41.    for (f=0;f<3;f++){
  42.        printf("\n|");
  43.        for (c=0;c<3;c++){
  44.  
  45.        printf(" %d ",result[f][c]);
  46.        }
  47.        printf("|");
  48.        }
  49.  
  50.  
  51.  
  52.  
  53.    system("PAUSE");
  54.    return 0;
  55. }
  56.  


Título: Re: Ayuda con matriz traspuesta
Publicado por: leosansan en 16 Enero 2013, 13:33 pm

........... Un programa nos pide los elementos de una matriz 3x3 y nos escribe la matriz traspuesta y la suma de las dos matrices.


Sólo comentarte que te fijes en cómo se calcula la traspuesta.
Hay algunas correcciones menores, como en el scanf e inicializar la traspuesta con la original para luego cambiarla:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main() {
  5. int f,c,temp1,temp2;
  6. int mat[3][3];
  7. int result[3][3];
  8. int traspuesta[3][3];
  9.  
  10. // MATRIZ INICIAL
  11.    for (f=0;f<3;f++){
  12.        for (c=0;c<3;c++){
  13.             printf("Escribe un numero para la matriz: (%d %d)= ",f,c);
  14.             scanf("%d",&mat[f][c]);
  15.        traspuesta[f][c]=mat[f][c];
  16.        }
  17. }
  18. puts ("MATRIZ INICIAL\n");
  19. for (f=0;f<3;f++){
  20.            for (c=0;c<3;c++) {
  21.                     printf("%d  ",mat[f][c]);
  22.                }puts("\n");
  23.        }puts("\n");
  24. // TRASPUESTA
  25.    for (f=0;f<3;f++)
  26.        for (c=0;c<3 && c<f;c++) {
  27.                temp1=traspuesta[f][c];
  28.                temp2=traspuesta[c][f];
  29.                traspuesta[c][f]= temp1;
  30.                traspuesta[f][c]= temp2;
  31.            }
  32.  puts ("MATRIZ SIMETRICA O TRASPUESTA\n");
  33.  for (f=0;f<3;f++)  {
  34.            for (c=0;c<3;c++) {
  35.                     printf("%d  ",traspuesta[f][c]);
  36.                }puts("\n");
  37.        }puts("\n");
  38. // RESULTADO
  39.    for (f=0;f<3;f++){
  40.        for (c=0;c<3;c++){
  41.        result[f][c]=mat[f][c]+traspuesta[f][c];
  42.        }
  43. }
  44. // MUESTRA LA SUMA
  45.    for (f=0;f<3;f++){
  46.        printf("\n|");
  47.        for (c=0;c<3;c++){
  48.          printf(" %d ",result[f][c]);
  49.        }
  50.        printf("|");
  51.    }
  52.    system("PAUSE");
  53.    return 0;
  54. }
  55.  
Saluditos!:


Título: Re: Ayuda con matriz traspuesta
Publicado por: sora_ori en 16 Enero 2013, 22:57 pm
Se agradece compañero.


Un saludo!