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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Matriz
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Matriz  (Leído 7,331 veces)
Yoldy

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Matriz
« en: 9 Mayo 2017, 03:06 am »

Hola, necesito de su ayuda, quiero imprimir pares de caracteres para toda la tabla, de forma aleatoria.

como

? # ¡ x
x ? # ¡
0 - + *
+ 0 - *

Código
  1. #include <stdio.h>
  2. #include <stdlib.h> //incluye srand() y rand()
  3. #include <conio.h>
  4. #include <time.h> //incluye time()
  5.  
  6. char a[4][4]; //tamaño de la matriz
  7. char cartas[]={'#','%','@','*','!','<','x'};
  8. int total=sizeof(cartas);
  9.  
  10. int main()
  11. {
  12.    srand(time(0));//numeros Aleatorios en funcion del tiempo
  13.    for (int i=0;i<4;i++)//para desplazarse por las columnas
  14.    {
  15.        for (int j=0;j<4;j++)//para desplazarse por las filas
  16.        {
  17.            a[i][j]=cartas[rand()%total];
  18.            printf("\t%c",a[i][j]);//imprime elemento de la matriz en pantalla
  19.        }
  20.      printf("\n\n");
  21.    }
  22.   getchar();
  23. }
  24.  


« Última modificación: 10 Mayo 2017, 02:05 am por Yoldy » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Llenado de Matriz
« Respuesta #1 en: 9 Mayo 2017, 03:20 am »

mi recomendación es que hagas otro array que reciba las 2 elementos que quieres usar...


tambien puede reorganizar tu array y solo usas los 2 primeros


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Llenado de Matriz
« Respuesta #2 en: 9 Mayo 2017, 09:28 am »

No entiendo la pregunta.
¿Quieres encontrar dos caracteres iguales que haya en la tabla?
En línea

Yoldy

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Llenado de Matriz
« Respuesta #3 en: 9 Mayo 2017, 12:22 pm »

OK, me refiero a que quiero mostrar pares de caracteres para llenar mi tabla, de forma aleatoria.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Llenado de Matriz
« Respuesta #4 en: 9 Mayo 2017, 12:33 pm »

OK, me refiero a que quiero mostrar pares de caracteres para llenar mi tabla, de forma aleatoria.


Código:
? # ¡ x
x ? # ¡
0 - + *
+ 0 - *

no entiendo lo de pares... ya te perdí.... ahí no veo los pares aclarados ni nada...
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Llenado de Matriz
« Respuesta #5 en: 9 Mayo 2017, 15:19 pm »

Ya entiendo, creo. La tabla debe tener dos unidades del mismo carácter en cualquier posición. Es decir: habrá un número tal de caracteres diferentes como la mitad de casillas de dicha tabla.
Pues deberás encontrar una forma de marcar los caracteres que han salido dos veces, para no incluirlos más.
Para darte ideas: usar una estructura que guarde el carácter y cuantas veces ha salido; usar un array adicional con correspondencia al de caracteres que indique cuantas veces ha salido un carácter; usar una lista enlazada donde se eliminen los caracteres que han salido dos veces.

« Última modificación: 9 Mayo 2017, 16:11 pm por MAFUS » En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Llenado de Matriz
« Respuesta #6 en: 9 Mayo 2017, 17:03 pm »

Al arreglo cartas le falta 1 elemento, la matriz de 4x4 = 16 caracteres, y cartas tiene tamano 7.

Una idea alternativa es que modifiques el arreglo de cartas, eligiendo aleatoriamente desde el, y llevando al final o al inicio la carta elegida, y recorrerlo 2 veces. Con eso, no requieres memoria adicional, ninguna estructura de datos extra, y llevar donde vas en 1 indice adicional.
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Llenado de Matriz
« Respuesta #7 en: 9 Mayo 2017, 17:36 pm »

¿Podrías hacer un ejemplo de eso?
En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Llenado de Matriz
« Respuesta #8 en: 9 Mayo 2017, 23:02 pm »

O(1) espacio
O(n) operaciones, n el tamaño del arreglo de cartas, la mitad de la matriz

Verlo ejecutándose aquí: http://goo.gl/KLHE8S

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. char a[4][4];
  6. char cartas[] = {'#','%','@','*','!','<','x', '+'};
  7. int total=sizeof(cartas);
  8.  
  9. int main()
  10. {
  11.    int mover_a = total*2-1;
  12.    srand(time(0));
  13.    for (int i=0; i < 4; i++) {
  14.        for (int j=0; j < 4; j++) {
  15.            int hacia = mover_a % total;
  16.            int desde = rand() % (hacia + 1);
  17.  
  18.            a[i][j] = cartas[desde];
  19.            cartas[desde] = cartas[hacia];
  20.            cartas[hacia] = a[i][j];
  21.  
  22.            printf("\t%c ",a[i][j]);
  23.  
  24.            mover_a--;
  25.        }
  26.      printf("\n\n");
  27.    }
  28. }
  29.  
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Llenado de Matriz
« Respuesta #9 en: 9 Mayo 2017, 23:36 pm »

Entiendo y es interesante. El array cambia en cada iteración, es muy aleatorio.
Aunque el segundo elemento del par solo puede volver a salir cuando han terminado de salir todos los símbolos, nunca podría generarse un patrón como el del ejemplo del enunciado.
Aunque, ahora que lo veo, los dos estamos equivocados XD
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

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