• Viernes 29 de Marzo de 2024, 07:14

Autor Tema:  mostrar valores de matriz en pantalla (c++)  (Leído 3877 veces)

daniflo

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
mostrar valores de matriz en pantalla (c++)
« en: Domingo 28 de Diciembre de 2008, 04:08 »
0
Cita de: daniflo
Hola
Para empezar, les cuento que, como es de esperarse, necesito ayuda con un código... es que llevo bastante tiempo sin programar en c++ y me ha costado aunque he buscado, no le encuentro el error...
bueno, el código

Código: Text
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main ()
  5. {
  6. int d[4];
  7.    
  8. int mat[3][3];
  9.  
  10. mat[1][2]=12;
  11. mat[1][3]=13;
  12. mat[1][4]=14;
  13.  
  14. mat[2][1]=21;
  15. mat[2][3]=23;
  16. mat[2][4]=24;
  17.  
  18. mat[3][1]=31;
  19. mat[3][2]=32;
  20. mat[3][4]=33;
  21.  
  22. mat[4][1]=41;
  23. mat[4][2]=42;
  24. mat[4][3]=43;
  25.  
  26. cout<<mat[1][4]<<endl;
  27.  
  28. for (int i=1; i<4; i++)
  29. {   d[i] = *mat[4,i];    
  30.     cout<<"mat[4,"<<i<<"]= "<<mat[4,i]<<endl;
  31.     cout<<"d["<<i<<"]= "<<d[i]<<endl;}
  32.  
  33. cin.get();
  34. }
  35.  
  36.  
  37.  

se supone que pasa los valores de la fila 4 a un arreglo unidimensional, pero no sale :s

cualquier cosa que me pudieran decir, seria genial
gracias de antemano

daniflo

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: mostrar valores de matriz en pantalla (c++)
« Respuesta #1 en: Domingo 28 de Diciembre de 2008, 20:51 »
0
ya lo arregle, debio ser asi... por si a alguien le sirviera xD

Código: Text
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main ()
  5. {
  6. int d[4];
  7.    
  8. int mat[4][4];
  9.  
  10. mat[1][2]=12;
  11. mat[1][3]=13;
  12. mat[1][4]=14;
  13.  
  14. mat[2][1]=21;
  15. mat[2][3]=23;
  16. mat[2][4]=24;
  17.  
  18. mat[3][1]=31;
  19. mat[3][2]=32;
  20. mat[3][4]=33;
  21.  
  22. mat[4][1]=41;
  23. mat[4][2]=42;
  24. mat[4][3]=43;
  25.  
  26. cout<<mat[4][1]<<endl;
  27.  
  28. for (int i=1; i<4; i++)
  29. {   d[i] = mat[4][i];    
  30.     cout<<"mat[4,"<<i<<"]= "<<mat[4][i]<<endl;
  31.     cout<<"d["<<i<<"]= "<<d[i]<<endl;}
  32.  
  33. cin.get();
  34. }
  35.  
  36.  
  37.  

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: mostrar valores de matriz en pantalla (c++)
« Respuesta #2 en: Domingo 28 de Diciembre de 2008, 20:54 »
0
Para empezar tienes 2 errores que veo:

1. Dices que necesitas pasar los valores de la fila 4, pero la matriz es de 3x3 lo que significa que que tratas de leer una fila que no existe, define tu matriz para que sea de 4x4.

2. En C/C++ los indices de arreglos (vectores y matrices) comienzan en 0 y no en 1, por lo tanto en un vector el elemento 1 es vector[0], el elemento 2 es vector[1] y asi sucesivamente. Lo mismo con matrices, el elemento de la fila 1, columna 1 es matriz[0][0], el elemento de la fila 1, columna 2 es matriz[0][1] y asi sucesivamente.

Es raro que digas que ya has programado en C++, porque a mi me da la impresion que no lo has hecho, ese detalle de C++ es algo que no se puede olvidar.

Saludos :hola:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: mostrar valores de matriz en pantalla (c++)
« Respuesta #3 en: Domingo 28 de Diciembre de 2008, 20:55 »
0
ups, ya habias encontrado la respuesta, bien por ti.

Aun asi, sigues teniendo errores en los indices, lo que puede causar sobreescritura de memoria, lee mi comentario anterior.

En un programa pequeño quizas no importe, ni se note, pero un programa grande puede tener consecuencias catastroficas.

Saludos :hola:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================