elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Accede Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, YreX-DwX)
| | |-+  ordenamineto de matrices c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ordenamineto de matrices c++  (Leído 222 veces)
parnner

Desconectado Desconectado

Mensajes: 1


Ver Perfil
ordenamineto de matrices c++
« en: 14 Mayo 2020, 02:28 »

buenas noches tengo un problema con un programa de ordenar una matriz pero no ordena este es ek codigo gracias por su colaboracion

Código
  1. #include <iostream>
  2. using namespace std;
  3. void ordenar (int[][3],int);
  4. void llenar (int[][3],int);
  5. void imprimir(int[][3],int);
  6. main()
  7. {
  8. int fila;
  9. int A [fila][3];
  10.     llenar(A,fila);
  11. return 0;
  12. }
  13. void llenar(int A [][3],int x)
  14. {
  15. cout<<"ingrese numero de filas"<<endl;
  16. cin>>x;
  17. for(int i=0;i<x;i++)
  18. {
  19. for(int j=0;j<3;j++)
  20. {
  21. cout<<"ingrese los elementos de la matriz"<<endl;
  22. cin>>A[i][j];
  23. }
  24. }
  25. cout<<"esta es la matriz desordenada"<<endl;
  26. imprimir(A,x);
  27. cout<<endl;
  28. cout<<"este es la matriz ordenada"<<endl;
  29. ordenar(A,x);
  30. }
  31. void imprimir(int A[][3],int x)
  32. {
  33. for(int i=0;i<x;i++)
  34. {
  35. for(int j=0;j<3;j++)
  36. {
  37. cout<<"["<< A[i][j]<<"]";
  38. }
  39. }
  40. }
  41. void ordenar(  int A [][3],int x)
  42. {
  43. for(int i=0;i<x;i++)
  44. {
  45. for(int j=0;j<3;j++)
  46. {
  47. for(int y=0;y<i;y++)
  48. {
  49. for(int z=0;z<3;z++)
  50. {
  51. if(A[i][j]< A[x][y])
  52. {
  53. int aux=A[i][j];
  54. A[i][j]=A[x][y];
  55.                    A[x][y]=aux;
  56. }
  57. }
  58. }
  59. }
  60. }
  61. imprimir(A,x);
  62. }
  63.  



MOD: Utiliza etiquetas de Código GeSHi para el código.


« Última modificación: 14 Mayo 2020, 04:44 por YreX-DwX » En línea

YreX-DwX
Moderador
***
Desconectado Desconectado

Mensajes: 702



Ver Perfil
Re: ordenamineto de matrices c++
« Respuesta #1 en: 14 Mayo 2020, 05:27 »

Problema 1: la variable <fila> no está inicializada. Tienes que darle un valor. No puedes crear la matriz primero en la línea 9 y pedir el número de filas que tendrá en la función que llamas después (línea 10).
Además es recomendable que utilices constantes o variables para guardar los datos, por ejemplo, el 3. Así si quieres cambiar dicho valor solo tendrás que cambiarlo en el lugar en el que declaras la variable/constante y no a lo largo de todo el programa. Digamos que es una buena práctica.

Consejo: Si la función es llenar(), que se encargue únicamente de rellenar la matriz. No tiene sentido que metas todo el programa dentro de dicha función. Separando el programa correctamente en funciones te será más fácil encontrar posibles errores en el futuro o poder hacer modificaciones en tu código.

Problema 2: El método para ordenar la matriz.
Lo mejor es tratar la matriz como un array unidimensional. Puedes utilizar un único índice que recorra todos los elementos.
Código
  1. for(int i = 0; i < FILAS * COLUMNAS; ++i){
  2.  cout << "Fila: " << i / COLUMNAS << " - Columna: " << i % COLUMNAS << endl;
  3. }

Utilizando esto puedes implementar el algoritmo burbuja como si de un array unidimensional se tratara. Te dejo el pseudocódigo para que lo conviertas a C++:
Código:
PARA i := 1 HASTA filas * columnas - 1 INCREMENTO 1 HACER
  PARA j := 0 HASTA filas * columnas - 2 INCREMENTO 1 HACER
    SI M[j / columnas][j % columnas] > M[(j+1) / columnas][(j+1) % columnas] ENTONCES
      swap(M[j / columnas][j % columnas], M[(j+1) / columnas][(j+1) % columnas])
    FIN SI
  FIN PARA
FIN PARA

Prueba a implementar el algoritmo en C++. Seguro que funciona.

PD: Al poner en el pseudocódigo (filas * columnas - 1) se incluye dicho valor. En C++ sería equivalente poner cualquiera de las dos siguientes expresiones:
Código
  1. for(int i = 1; i < filas * columnas; ++i){...}
  2. for(int i = 1; i <= filas * columnas - 1; ++i){...}


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
matrices en c
Programación C/C++
ALONSOQ 9 2,978 Último mensaje 27 Junio 2012, 05:15
por twins
[C++] Matrices
Programación C/C++
C-- 4 1,554 Último mensaje 21 Noviembre 2012, 01:14
por C--
matrices en c
Programación C/C++
howaboutno 2 1,120 Último mensaje 26 Diciembre 2012, 05:53
por durasno
c++ matrices[3][4]
Programación C/C++
lukaszg_15 6 1,430 Último mensaje 25 Marzo 2014, 20:38
por Eternal Idol
Matrices en C
Programación C/C++
criser20 3 485 Último mensaje 3 Abril 2014, 20:38
por leosansan
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines