Autor
|
Tema: Matriz (Leído 7,347 veces)
|
Yoldy
Desconectado
Mensajes: 7
|
|
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 - * #include <stdio.h> #include <stdlib.h> //incluye srand() y rand() #include <conio.h> #include <time.h> //incluye time() char a[4][4]; //tamaño de la matriz char cartas[]={'#','%','@','*','!','<','x'}; int total=sizeof(cartas); int main() { srand(time(0));//numeros Aleatorios en funcion del tiempo for (int i=0;i<4;i++)//para desplazarse por las columnas { for (int j=0;j<4;j++)//para desplazarse por las filas { a[i][j]=cartas[rand()%total]; printf("\t%c",a[i][j]);//imprime elemento de la matriz en pantalla } printf("\n\n"); } getchar(); }
|
|
« Última modificación: 10 Mayo 2017, 02:05 am por Yoldy »
|
En línea
|
|
|
|
engel lex
|
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
Mensajes: 1.603
|
No entiendo la pregunta. ¿Quieres encontrar dos caracteres iguales que haya en la tabla?
|
|
|
En línea
|
|
|
|
Yoldy
Desconectado
Mensajes: 7
|
OK, me refiero a que quiero mostrar pares de caracteres para llenar mi tabla, de forma aleatoria.
|
|
|
En línea
|
|
|
|
engel lex
|
OK, me refiero a que quiero mostrar pares de caracteres para llenar mi tabla, de forma aleatoria.
? # ¡ 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
Mensajes: 1.603
|
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
|
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
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
¿Podrías hacer un ejemplo de eso?
|
|
|
En línea
|
|
|
|
CalgaryCorpus
|
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#include <stdio.h> #include <stdlib.h> #include <time.h> char a[4][4]; char cartas[] = {'#','%','@','*','!','<','x', '+'}; int total=sizeof(cartas); int main() { int mover_a = total*2-1; srand(time(0)); for (int i=0; i < 4; i++) { for (int j=0; j < 4; j++) { int hacia = mover_a % total; int desde = rand() % (hacia + 1); a[i][j] = cartas[desde]; cartas[desde] = cartas[hacia]; cartas[hacia] = a[i][j]; printf("\t%c ",a[i][j]); mover_a--; } printf("\n\n"); } }
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda - Buscar si existe una matriz dentro de otra matriz
Programación Visual Basic
|
EddyW
|
2
|
5,829
|
14 Agosto 2010, 06:18 am
por EddyW
|
|
|
Matriz Dentro de otra matriz
Programación Visual Basic
|
moba741120
|
3
|
6,746
|
13 Abril 2011, 18:29 pm
por raul338
|
|
|
MATRIZ que imprima como una matriz en forma de cuadrado... ayudaaaaa!! help
Programación C/C++
|
oscarpy
|
3
|
8,515
|
9 Abril 2012, 16:23 pm
por Xandrete
|
|
|
Enviar una matriz desde una funcion a la matriz del main
Programación C/C++
|
erest0r
|
3
|
3,553
|
22 Junio 2013, 09:05 am
por leosansan
|
|
|
Juego con matriz dinámica en c++, función para rrecorrer matriz
Programación C/C++
|
jajaimess
|
1
|
3,428
|
21 Junio 2014, 05:21 am
por .:UND3R:.
|
|