Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: yesid1718 en 23 Octubre 2016, 04:32 am



Título: Matrices
Publicado por: yesid1718 en 23 Octubre 2016, 04:32 am
Tengo un codigo en c y en este creo una matriz la imprimo y la sumo luego los valores de las fila pares e impares se guardan en vectores diferentes hasta esta parte todo esta bien pero al sumar los vectores no me aparecen bien los valores de la suma correctamente me aparecen unos números largos todo extraños y no se cual es el error porfavor me podrian ayudar con este tema.?


Título: Re: Matrices
Publicado por: engel lex en 23 Octubre 2016, 04:41 am
sin ver tu codigo puede ser que sumaste mal, fallaste colocando algo en las matrices ya que no tiene claridad de como se usan, estás imprimiendo lo que no debes, nunca las inicializaste.... las posibilidades son muchas...

si colocas tu codigo usa las etiquetas GeSHi


Título: Re: Matrices
Publicado por: yesid1718 en 23 Octubre 2016, 05:01 am
Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3.  
  4. //Declaracion de funciones
  5.  
  6. void llenar_matriz( int A[10][10] , int , int);
  7. void imprimir_matriz(int A[10][10] , int , int);
  8. void llenar_vectorpar(int B[25], int A[10][10], int, int );
  9. void llenar_vectorimpar(int G[25], int A[10][10], int, int );
  10. void suma_vectorA(int A[25] , int, int );
  11. void sumar_matriz(int A[10][10] , int , int);
  12.  
  13.  
  14. // programa principal
  15.  
  16. void main(){
  17.  
  18. //zona de declaración de variables locales
  19.  
  20. int f;
  21. int g;
  22. int A[10][10];
  23. int B[25];
  24. int G[25];
  25.  
  26. printf("ingrese el nuemro de filas \n");
  27. scanf("%d",&g);
  28. printf("ingrese el nuemro de columnas \n");
  29. scanf("%d",&f);
  30.  
  31. llenar_matriz (A,g, f);
  32.    imprimir_matriz (A, g, f);
  33.    sumar_matriz(A,g,f);
  34.    llenar_vectorpar(B,A, g, f);
  35.    llenar_vectorimpar(G,A, g, f);
  36.    suma_vectorA( B, g,f );
  37.    suma_vectorA( G, g,f );
  38.  
  39.   getch();
  40.  
  41. }
  42.  
  43. void llenar_matriz (int A[10][10] , int g , int f)
  44.  
  45. {
  46.  
  47. int fila,columna;
  48.  
  49.  
  50. for (fila=0; fila<=g; fila++)
  51. {
  52. for (columna=0; columna<=f; columna++)
  53. {
  54.  
  55. printf ("digite el valor en la posicion %d %d", fila, columna);
  56. scanf("%d", &A[fila][columna]);
  57. }
  58. printf("\n");
  59. }
  60.  
  61. }
  62.  
  63. void sumar_matriz(int A[10][10] , int g , int f ){
  64.  
  65. int fila,columna;
  66. int Ac=0 ;
  67.  
  68.  
  69.  
  70. for (fila=0; fila<=g; fila++)
  71. {
  72. for (columna=0; columna<=f; columna++)
  73. {
  74.  
  75. Ac= A[fila][columna] + Ac ;
  76. }
  77.  
  78. }
  79. printf("\nla suma de la matriz es:\n ");
  80. printf ("\n%d\n", Ac);
  81.  
  82. }
  83.  
  84.  
  85. void imprimir_matriz( int A[10][10], int g , int f ) {
  86.  
  87. int fila,columna;
  88.  
  89.  for (fila=0; fila<=g; fila++)
  90. {
  91. for (columna=0; columna<=f; columna++)
  92. {
  93.  
  94. printf ("\t %d", A[fila][columna]);
  95.  
  96. }
  97. printf("\n ");
  98. }
  99.  
  100.  
  101.  
  102.  
  103. }
  104.  
  105.  
  106.  
  107. void  llenar_vectorpar(int B[25], int A[10][10], int g , int  f) {
  108.  
  109.  int fila,columna;
  110.  
  111. printf("\nvector para las filas par\n");
  112.  for (fila=0; fila<=g; fila++) {
  113.  
  114. for (columna=0; columna<=f; columna++){
  115. if(fila % 2 == 0) {
  116.  
  117.  
  118. B[fila]=A[fila][columna];
  119. printf("%d\n",B[fila]);
  120.  
  121.                     }
  122.  
  123.                                       }
  124.  
  125. }
  126.  
  127. }
  128.  
  129. void llenar_vectorimpar(int G[25], int A[10][10], int g, int f ){
  130.  
  131. int fila,columna;
  132.  
  133. printf("\nvector para las filas impar\n\n");
  134.  for (fila=0; fila<=g; fila++) {
  135.  
  136. for (columna=0; columna<=f; columna++){
  137. if(fila % 2 != 0) {
  138.  
  139.  
  140. G[fila]=A[fila][columna];
  141. printf("%d\n",G[fila]);
  142.  
  143.                     }
  144.  
  145.                                       }
  146.  
  147. }
  148.  
  149. }
  150.  
  151. void suma_vectorA(int B[25] , int g, int f) {
  152.  
  153. int Ac=0;
  154. int i;
  155.  
  156.  
  157. for ( i=0 ; i<=g ; i++){
  158.  
  159. Ac= B[i] + Ac ;
  160.  
  161. }
  162.  
  163. printf( "\nla suma de los valores del vector para filas pares es:\n ");
  164. printf("\n%d\n", Ac);
  165.  
  166. }
  167.  



Este es el código no se que tengo mal te agradeceria que me ayudaras.



Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Matrices
Publicado por: engel lex en 23 Octubre 2016, 05:05 am
ahora corre tu código y muestra una captura de pantalla a ver el resultado

aunque de antemano en los for veo unos menor o igual, que deberian ser solo menor que

y en general, main debe ser tipo int y retornar 0...


Título: Re: Matrices
Publicado por: yesid1718 en 23 Octubre 2016, 05:16 am
(http://)


Título: Re: Matrices
Publicado por: engel lex en 23 Octubre 2016, 05:41 am
fijate el error que te digo (en tiempo de ejecución)

Código:
filas: 1, columnas: 1
vector:
1 2
3 4

en ese vector cuento 2 filas y 2 columnas

el error está en

Código
  1. void  llenar_vectorpar(int B[25], int A[10][10], int g , int  f) {
  2.  
  3.  int fila,columna;
  4.  
  5. printf("\nvector para las filas par\n");
  6.  for (fila=0; fila<=g; fila++) {
  7.  
  8. for (columna=0; columna<=f; columna++){
  9. if(fila % 2 == 0) {
  10.  
  11.  
  12. B[fila]=A[fila][columna];
  13. printf("%d\n",B[fila]);
  14.  
  15.                     }
  16.  
  17.                                       }
  18.  
  19. }
  20. }

cuando llenas B o G, saltas la posición... es decir en ese segmento, nunca llenas B[1] por ejemplo, asi que cuando llegas a llenar vector y accedes a B[1], contiene basura como es de esperar