Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: EdgarKrieger en 3 Diciembre 2013, 18:23 pm



Título: duda con programa de matrices!!!!
Publicado por: EdgarKrieger en 3 Diciembre 2013, 18:23 pm
Hola a todos,tengo una duda en mi programa, tengo que hacer la división de una matriz de (3,4) entre el elemento de la matriz (2,2) esto es lo que llevo:


//Programa que divide una matris de 3,4 entre el elemento 2,2
#include <stdio.h>
int main()
{
   int matrix[5][5],i,j,B[5][5];
   for(i=0;i<3;i++){
      for(j=0;j<4;j++){
         printf("Valor matriz[%d][%d] >>> ",i+1,j+1);
         scanf("%d",&matrix[j]);
         while(getchar()!='\n');
      }
   }
   for(i=0;i<3;i++){
      printf("\n");
      for(j=0;j<4;j++){
         printf("\t%d",matrix[j]);
      }
   }
   printf("\n");
   for(i=0;i<3;i++){
      for(j=0;j<4;j++){
         if(matrix[2][2]==0){
            printf("No se puede porque es cero\n");
         }else{
            B[j]=matrix[2][2]/matrix[j];
         }
      }
   }
   for(i=0;i<3;i++){
      printf("\n");
      for(j=0;j<4;j++){
         printf("\t%d",B[j]);
      }
   }
   printf("\n");
   return 0;
}

y mi duda es que me sale core generado y eso sale cuando divido entre cero pero cuando introduzco otro elemento en (2,2) no me hace la división correspondiente, por favor alguien que me ayude en verdad no tengo la mas mínima idea de lo que tengo mal.


Título: Re: duda con programa de matrices!!!!
Publicado por: ivancea96 en 3 Diciembre 2013, 18:38 pm
En primer lugar, pusiste:
Código
  1. scanf("%d",&matrix[j]);
  2. B[j]=matrix[2][2]/matrix[j];

matrix[j]. Dado que es una amtriz bidimensional, tienes que poner la segunda "dimension", matriz[j][X]. Corríge eso, y vuelve a probar. Si no va, postea, y miro que tal. No lo corrijo antes, porque a lo mejor no lo haría como tú lo quieres hacer.


Título: Re: duda con programa de matrices!!!!
Publicado por: crazykenny en 3 Diciembre 2013, 20:26 pm
Bueno, una opción que se me ocurre ahora mismo es, bueno, que podrias probar seria asignar los dos valores de las posiciones de la matriz en cuestión en dos variables y luego utilizar estas variables para realizar la división.
Muchas gracias por vuestra atención.
Saludos.


Título: Re: duda con programa de matrices!!!!
Publicado por: leosansan en 3 Diciembre 2013, 21:55 pm
Hola a todos,tengo una duda en mi programa, tengo que hacer la división de una matriz de (3,4) entre el elemento de la matriz (2,2) esto es lo que llevo:
............

//Programa que divide una matriz de 3,4 entre el elemento 2,2


Antes que nada cuando postees código elige las etiquetas GeSHi y toma la C++. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.

Otra cosa es que al ir los índices de la matriz desde  0,0 el elemento 


Código
  1. matrix[2][2] es en realidad el matrix[1][1]

y vas a dividir por ese elemento y no al revés con lo que sería

Código
  1. B[i][j]=matrix[i][j]/matrix[1][1];

Para no liarte he respetado el código que propones, que quedaría así:

Código
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int matrix[3][4],i,j,B[3][4];
  5. for(i=0;i<3;i++){
  6. for(j=0;j<4;j++){
  7. printf("Valor matriz[%d][%d] >>> ",i+1,j+1);
  8. scanf("%d",&matrix[i][j]);
  9. while(getchar()!='\n');
  10. }
  11. }
  12. for(i=0;i<3;i++){
  13. printf("\n");
  14. for(j=0;j<4;j++){
  15. printf("\t%d",matrix[i][j]);
  16. }
  17. }
  18. printf("\n");
  19. if(matrix[1][1]==0){
  20.        printf("No se puede porque es cero\n");
  21.        return 1;
  22.    }
  23. for(i=0;i<3;i++)
  24. for(j=0;j<4;j++)
  25. B[i][j]=matrix[i][j]/matrix[1][1];
  26. for(i=0;i<3;i++){
  27. printf("\n");
  28. for(j=0;j<4;j++)
  29. printf("\t%d",B[i][j]); }
  30. printf("\n");
  31. return 0;
  32. }
  33.  

Saluditos! ....


Título: Re: duda con programa de matrices!!!!
Publicado por: EdgarKrieger en 10 Diciembre 2013, 17:26 pm
Leosansan gracias por la ayuda y si tomare en cuenta eso que dices que elija la etiqueta GeSHi