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


 


Tema destacado: Java [Guía] Patrones de diseño - Parte 1


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

Desconectado Desconectado

Mensajes: 7


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

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 por Yoldy » En línea

engel lex
CoAdmin
***
Desconectado Desconectado

Mensajes: 12.943



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

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: 928



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

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

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Yoldy

Desconectado Desconectado

Mensajes: 7


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

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

engel lex
CoAdmin
***
Desconectado Desconectado

Mensajes: 12.943



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

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: 928



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

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 por MAFUS » En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
CalgaryCorpus

Desconectado Desconectado

Mensajes: 62


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

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

Visita mi perfil en LinkedIn: http://goo.gl/SAaM48
MAFUS


Desconectado Desconectado

Mensajes: 928



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

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

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
CalgaryCorpus

Desconectado Desconectado

Mensajes: 62


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

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

Visita mi perfil en LinkedIn: http://goo.gl/SAaM48
MAFUS


Desconectado Desconectado

Mensajes: 928



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

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

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

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