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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ordenar una matriz sin repetir numeros.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ordenar una matriz sin repetir numeros.  (Leído 4,733 veces)
veravluis

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Ordenar una matriz sin repetir numeros.
« en: 24 Abril 2016, 00:56 am »

Hola a todos, una pregunta como podría ordenar esta matriz de números aleatorios & hacer que no se repitieran ? Gracias por cierto me recomiendan algun libro de C para leer o algo gracias.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define filas 5
  5. #define columnas 5
  6.  
  7. int i,j;
  8.  
  9. int main() {
  10.  
  11. srand(time(NULL));
  12. int num;
  13. int matriz[filas][columnas];
  14. //num = rand()%1+9;
  15.  
  16. for(i = 0; i < filas;i++) {
  17. printf("\n");
  18. for(j = 0; j < columnas;j++){
  19. matriz[i][j] = rand()%9+1;
  20. printf("%d ",matriz[i][j]);
  21. }
  22. }
  23.  
  24. return 0;
  25. }
  26.  


En línea

fary


Desconectado Desconectado

Mensajes: 1.076



Ver Perfil WWW
Re: Ordenar una matriz sin repetir numeros.
« Respuesta #1 en: 24 Abril 2016, 09:16 am »

Puedes usar el metodo burbuja para ordenarlos de menor al mayor o viceversa. Para no incorporar los datos que esten repetidos simplemente comprueba que en tu array no esta el número, si el numero ya esta en el array genera otro nuevo.

saludos.

https://es.wikipedia.org/wiki/Ordenamiento_de_burbuja


En línea

Un byte a la izquierda.
veravluis

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Ordenar una matriz sin repetir numeros.
« Respuesta #2 en: 24 Abril 2016, 20:54 pm »

Un ejemplo como podría hacer para que no se repitieran los números debería agregar una función o agregarlo a una de las que ya tengo.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define filas 5
  5. #define columnas 5
  6.  
  7. void cargar_matriz(int matriz[filas][columnas]);
  8. void ordenar_matriz(int matriz[filas][columnas]);
  9. void imprimir_matriz(int matriz[filas][columnas]);
  10.  
  11. int i,j,k,l;
  12.  
  13.    int main()  {
  14.  
  15.     int matriz[filas][columnas];
  16.  
  17.     cargar_matriz(matriz);
  18.     ordenar_matriz(matriz);
  19.     imprimir_matriz(matriz);
  20.  
  21.    return 0;  
  22.    }//Fin main
  23.  
  24.  
  25.    void cargar_matriz(int matriz[filas][columnas]){
  26.  
  27.     for(i = 0; i < filas; i++) {
  28.  
  29.         for(j = 0; j < columnas; j++) {
  30.         matriz[i][j] = rand()%25+1;
  31. }
  32. }
  33.  
  34. }//Fin función
  35.  
  36.  
  37. void ordenar_matriz(int matriz[filas][columnas]){
  38.  
  39. int mayor;
  40.  
  41. for(i = 0; i < filas;i++)   {
  42.  
  43.            for(j = 0; j < columnas;j++){
  44.  
  45.             for(k = 0; k < 5;k ++) {
  46.  
  47.             for(l = 0; l < 5; l++) {
  48.  
  49.             if(matriz[i][j] < matriz[k][l]) {
  50.  
  51.             mayor = matriz[i][j];
  52.             matriz[i][j] = matriz[k][l];
  53.             matriz[k][l] = mayor;
  54.  
  55. }
  56. }
  57. }
  58.  
  59.            }
  60.        }
  61. }//Fin Función.
  62.  
  63. void imprimir_matriz(int matriz[filas][columnas]){
  64.  
  65. for(i = 0; i < filas; i++) {
  66.         printf("\n");
  67.         for(j = 0; j < columnas; j++) {
  68.         printf(" %d ",matriz[i][j]);
  69. }
  70. }
  71. }//Fin función
  72.  
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ordenar una matriz sin repetir numeros.
« Respuesta #3 en: 24 Abril 2016, 22:07 pm »

De entrada se me plantea una duda:
Si la matriz ordenada no puede repetir ningún número puede que sea de menor tamaño que la matriz original. Siendo así:
¿La matriz ordenada debe ser la misma matriz original? Si la matriz original es estática, eso es definida del tipo T[dimY][dimX], no se puede reducir su tamaño. ¿Cómo se marcan las casillas vacías? ¿Cómo se distribuye la información en la matriz?
Si la matriz original es dinámica se pueden reducir sus dimensiones pero de nuevo aparece el problema de como se distribuye el sistema si no se pueden cuadrar las dimensiones (número impar de elementos).
En línea

veravluis

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Ordenar una matriz sin repetir numeros.
« Respuesta #4 en: 24 Abril 2016, 22:27 pm »

De entrada se me plantea una duda:
Si la matriz ordenada no puede repetir ningún número puede que sea de menor tamaño que la matriz original. Siendo así:
¿La matriz ordenada debe ser la misma matriz original? Si la matriz original es estática, eso es definida del tipo T[dimY][dimX], no se puede reducir su tamaño. ¿Cómo se marcan las casillas vacías? ¿Cómo se distribuye la información en la matriz?
Si la matriz original es dinámica se pueden reducir sus dimensiones pero de nuevo aparece el problema de como se distribuye el sistema si no se pueden cuadrar las dimensiones (número impar de elementos).

Entonces cuando cargo los números es que debería revisar si están repetido?
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ordenar una matriz sin repetir numeros.
« Respuesta #5 en: 25 Abril 2016, 00:29 am »

El enunciado es muy vago en su descripción. No sé que hay que hacer.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines