Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Eva93 en 29 Agosto 2013, 13:36 pm



Título: Matriz cuarta
Publicado por: Eva93 en 29 Agosto 2013, 13:36 pm
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define DIM 100
  4.  
  5. using namespace std ;
  6.  
  7. void lee_Matriz (float A[DIM][DIM], int N);
  8. void escribe_Matriz (float A[DIM][DIM], int N);
  9. void producto_Matriz (float A[DIM][DIM], float B[DIM][DIM], float C[DIM][DIM], int N);
  10. void Matriz_cuarta (float C[DIM][DIM], float D[DIM][DIM],int N);
  11.  
  12. int main()
  13. {
  14. float A[DIM][DIM], B[DIM][DIM], C[DIM][DIM], D[DIM][DIM];
  15. int N;
  16.  
  17. printf("Dame la dimension de las matrices: ");
  18. scanf("%d", &N);
  19. printf("\nIntroduce la 1a matriz: \n\n");
  20. lee_Matriz(A,N);
  21. system("pause");
  22. system("cls");
  23.  
  24. printf("La primera matriz es: \n\n");
  25. escribe_Matriz(A,N);
  26.  
  27.  
  28.  
  29. printf("El cuadrado de esa matrices es: \n\n");
  30. producto_Matriz(A,A,C,N);
  31. escribe_Matriz(C,N);
  32.  
  33. printf("La cuarta potencia de esa matrices es: \n\n");
  34. Matriz_cuarta(A,D,N);
  35. escribe_Matriz(C,N);
  36.  
  37.  
  38. ;
  39.  
  40. return 0;
  41. }
  42.  
  43. void lee_Matriz (float A[DIM][DIM], int N)
  44. {
  45. int i, j;
  46. for(i=0;i<N;i++)
  47. for(j=0;j<N;j++)
  48. {
  49. printf("\nDame el elemento %d,%d de la matriz: ",i+1,j+1);
  50. scanf("%f",&A[i][j]);
  51. }
  52. return ;
  53. }
  54.  
  55. void escribe_Matriz (float A[DIM][DIM], int N)
  56. {
  57. int i, j;
  58. for(i=0;i<N;i++)
  59. {
  60. printf("(");
  61. for(j=0;j<N;j++)
  62. {
  63. printf(" %.2f ",A[i][j]);
  64. }
  65. printf(")\n");
  66. }
  67. }
  68.  
  69. void producto_Matriz (float A[DIM][DIM], float B[DIM][DIM], float C[DIM][DIM], int N)
  70. {
  71. int i,j,l;
  72. for(i=0;i<N;i++)
  73. {
  74. for(j=0;j<N;j++)
  75. {
  76. C[i][j]=0;
  77. for(l=0;l<N;l++)
  78. {
  79. C[i][j]+=A[i][l]*B[l][j];
  80. }
  81. }
  82. }
  83. return;
  84. }
  85.  
  86. void Matriz_cuarta(float C[DIM][DIM], float D [DIM][DIM],int N)
  87.  
  88. {
  89. int i,j,l;
  90. for(i=0;i<N;i++)
  91. {
  92. for(j=0;j<N;j++)
  93. {
  94.  
  95. D[i][j]=0;
  96. for(l=0;l<N;l++)
  97. {
  98. D[i][j]+=C[i][l]*C[l][j];
  99. }
  100. }
  101. }
  102. return;
  103. }


Solo tengo un pequeño problema sobre este programa, a la hora de mostrar en pantalla la matriz a la cuarta, me vuelve a salir la matriz al cuadrado.

Supongo que es un fallo en la función pero por muchos cambios que haga tengo el mismo problema.

¿ cual es mi error ? gracias de antemano


Título: Re: Matriz cuarta
Publicado por: eferion en 29 Agosto 2013, 14:12 pm
Código
  1. printf("El cuadrado de esa matrices es: \n\n");
  2. producto_Matriz(A,A,C,N);
  3. escribe_Matriz(C,N);
  4.  
  5. printf("La cuarta potencia de esa matrices es: \n\n");
  6. Matriz_cuarta(A,D,N);
  7. escribe_Matriz(C,N);

A ver, analizando tu programa, el código de arriba hace lo siguiente:

* para el producto: C = A * A
* para la cuarta: D = A * A

Si te das cuenta, en la cuarta estas haciendo D = A * A y luego estas imprimiendo C... Cosas del copypaste... Mas bien creo que lo que deberías hacer es D = C * C.

En cualquier caso la función que calcula la cuarta es un poco absurda porque es un calco de la función de producto, la única diferencia es que solo usa una matriz en vez de dos. Si quieres que la función cuarta calcule la cuarta potencia ella sola deberías replante arte el algoritmo.


Título: Re: Matriz cuarta
Publicado por: Eva93 en 30 Agosto 2013, 12:19 pm
Muchas gracias, al fijarme en mis errores y probar mas programitas ya me van saliendo programas sobre matrices