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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


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

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Reemplazar cout [Juego Encontrar Triadas]
« en: 14 Mayo 2017, 01:56 am »

Señor@s soy nuevo por aqui, pero desde hace unos meses vi que aca estan los duros de la programacion ;D ;D

queria saber si alguien me puede ayudar reemplazando el cout y demas cositas que tiene el codigo que les mostrare en breve, soy novato en esto, es mi 2 semestre, estoy familiarizado apenas con las funciones, pero me cuesta reemplazar "cout" de la funcion void imprimir por el tipico printf y un ciclo for, para evitar tantas lineas innecesarias, otro problema es que no llega al fin del juego, no se que ocurre con las triadas, no le he preguntado a mi profesor gracias al cese de actividades de la u :silbar: :silbar: pero si alguien lo descubre estaria agradecido!!  :xD :xD :xD

Hay forma de eliminar la parte de las clases? es para basarme de aqui y hacer un proyecto del curso, pero claro esta, que aqui se manejan conceptos mas avanzados de los que me evaluaran, de antemano gracias!!  :laugh: :laugh:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <iostream>
  4. #include <time.h>
  5.  
  6. int i,j,b;
  7.  
  8. using namespace std;//plantilla
  9.  
  10. class jugador//va a tener 2 tipos de variables
  11. {
  12. private:
  13. int puntaje;//guarda el puntaje de cada jugador
  14. char a[20];//almacena nombre jugador
  15. public:
  16. void numpun(int a);//recibe el puntaje de cada jugador
  17. int enpun (void);//muestra el puntaje
  18. void innombre();//ingresa nombre de jugador
  19. char nombre (void);//muestra el nombre del jugador
  20.  ~ jugador() {cout<<"ADIOS" <<endl;}
  21.  
  22. };
  23. void jugador::numpun(int a)
  24. {
  25. a=puntaje;//numpun va a tener un entero a que va a almacenar el puntjae
  26. }
  27. int jugador::enpun()
  28. {
  29. return(puntaje);//regresa ese puntaje almacenado para que pueda mostrarlo
  30. }
  31. void jugador::innombre()
  32. {
  33. cin>>a;//almacena nombre
  34. }
  35. char jugador::nombre()
  36. {
  37. cout<<a<<":";//regresa ese nombre
  38. }
  39. void imprimir (string tablero[])//cadena llamada tablero para imprimirlo
  40. {
  41. system ("pause");
  42. system ("cls");//refrescar la pantalla en cada turno
  43. cout<<"\t\t CONCENTRECE\n";
  44. cout<<"\t********\n";
  45. cout<<"\t********\n";
  46. cout<<"\t**"<<tablero[0]<<"**"<<tablero[1]<<"**"<<tablero[2]<<"**"<<tablero[3]<<"**"<<tablero[4]<<"**"<<tablero[5]<<"**\n";//apareceran los valores aleatoreos dentro de tablero[]
  47. cout<<"\t**"<<tablero[6]<<"**"<<tablero[7]<<"**"<<tablero[8]<<"**"<<tablero[9]<<"**"<<tablero[10]<<"**"<<tablero[11]<<"**\n";
  48. cout<<"\t**"<<tablero[12]<<"**"<<tablero[13]<<"**"<<tablero[14]<<"**"<<tablero[15]<<"**"<<tablero[16]<<"**"<<tablero[17]<<"**\n";
  49. cout<<"\t**"<<tablero[18]<<"**"<<tablero[19]<<"**"<<tablero[20]<<"**"<<tablero[21]<<"**"<<tablero[22]<<"**"<<tablero[23]<<"**\n";
  50. cout<<"\t**"<<tablero[24]<<"**"<<tablero[25]<<"**"<<tablero[26]<<"**"<<tablero[27]<<"**"<<tablero[28]<<"**"<<tablero[29]<<"**\n";
  51. cout<<"\t********\n";
  52. cout<<"\t********\n";
  53.  
  54.  
  55. }
  56. int main()
  57. {
  58. jugador j1,j2;
  59. int turn1=1, turn2=2, tot1=0, tot2=0,i,z=0, total=0,x,a[4];
  60. int o=1,n,k,j;
  61. int num[30];
  62. string fichas [30];
  63. string hola[]={"a","b","c","d","e","f","g","h","i","j","a","b","c","d","e","f","g","h","i","j","a","b","c","d","e","f","g","h","i","j"};//opciones de las letras ocultas
  64. string table []={"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29"};//posiciones
  65. string auxi[]={"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29"};
  66. system("color 18");
  67. cout<<"\t CONCENTRECE\n";//presentacion del juego
  68.  
  69.  
  70. num[0]=0;
  71. srand (time (NULL));//inicializamos el proceso de asignacion de fichas aleatorias del tablero
  72. while(o<30)
  73. {
  74. n=rand()%30;//asigna un numero al azar no mayor a 30
  75. k=0;
  76. j=1;
  77. while(j<=30)
  78. {
  79. if(n==num[j])//compara si n sigue el patron de orden de j
  80. {
  81. k=1;
  82.  
  83. }
  84. j=j+1;
  85. }
  86. if(k!=1)//si k no es 1 es porque n es un numero que no sigue el orden
  87. {
  88. num[o]=n;//llena la matriz con numeros aleatorios
  89. o=o+1;
  90. }
  91. }
  92. for(o=0;o<30;o=o+1)//llena el arreglo de las fichas con letras, en orden aleatorio, usando el arreglo de numeros aleatorios para asignar posiciones aleatorias de las letras ocultas
  93. {
  94. fichas[o]=hola[num[o]];//asigna letras en orden aleatorio, de acuerdo a la matriz num[] que tiene valores aleatorios los cuales corresponden al orden del arreglo de caracteres
  95. }
  96. x=turn1;
  97. do
  98. {
  99. if(x==turn1)//empieza jug 1 y empieza ciclo hasta q las 10 tercias sean encontradas
  100. {
  101. imprimir(table);//imprime tablero
  102. cout<<"\n turno del jugador 1";//menciona turno
  103.  
  104. for(i=z;i<=3;i=i+1)
  105. {
  106. cout<<"\n Escoge una casilla:";
  107. cin>>a[i];//muestra la letra que se oculta en esa ficha(posicion elegida)
  108. if(a[i]>=30)
  109. {
  110. cout<<"\n Opcion invalida";
  111. a[i]=29;
  112. }
  113.  
  114. table[a[i]]=fichas[a[i]];
  115. imprimir(table);
  116.  
  117. }
  118. if((fichas[a[0]]==fichas[a[1]])&&(fichas[a[0]]==fichas[a[2]]))//verifica que las letras sean iguales
  119. {
  120. x=turn1;
  121. tot1=tot1+1;
  122. z=0;
  123. table[a[0]]=fichas[a[0]];
  124. table[a[1]]=fichas[a[1]];
  125. table[a[2]]=fichas[a[2]];
  126. cout<<"\n Has encontrado una terna!!\n";
  127. }
  128. else
  129. if((fichas[a[0]]==fichas[a[1]])&&(fichas[a[2]]!=fichas[a[0]]))//2 fichas iguales y una distinta
  130. {
  131. x=turn2;//cambia el turno al jugador 2
  132. z=1;//inicia contador para que vuelta a contar las fichas
  133. table[a[0]]=auxi[a[0]];
  134. table[a[1]]=auxi[a[1]];
  135. a[0]=a[2];//guarda la posicion de la ficha diferente con la 2
  136. table[a[0]]=fichas[a[0]];//deja visible la ficha que es distinta
  137. cout<<"\nFallaste en una casilla: C\n";
  138. cout<<"\nTermina turno de";
  139. cout<<"j1.nombre()"<<endl;
  140. }
  141. else
  142. if((fichas[a[0]]==fichas[a[2]])&&(fichas[a[1]]!=fichas[a[0]]))
  143. {
  144. x=turn2;
  145. z=1;
  146. table[a[0]]=auxi[a[0]];
  147. table[a[2]]=auxi[a[2]];
  148. a[0]=a[1];
  149. table[a[0]]=fichas[a[0]];
  150. cout<<"\nFallaste en una casilla: C";
  151. cout<<"\nTermina turno de";
  152. cout<<"j1.nombre()"<<endl;
  153. }
  154. else
  155. if((fichas[a[1]]==fichas[a[2]])&&(fichas[a[0]]!=fichas[a[1]]))
  156. {
  157. x=turn2;
  158. z=1;
  159. table[a[2]]=auxi[a[2]];
  160. table[a[1]]=auxi[a[1]];
  161. a[1]=a[0];
  162. table[a[0]]=fichas[a[0]];
  163. cout<<"\nFallaste en una casilla: C";
  164. cout<<"\nTermina turno de";
  165. cout<<"j1.nombre()"<<endl;
  166. }
  167. else
  168. {
  169.  
  170. x=turn2;
  171. z=0;
  172. table[a[0]]=auxi[a[0]];
  173. table[a[1]]=auxi[a[1]];
  174. table[a[2]]=auxi[a[2]];
  175. cout<<"\nFallaste : C";
  176. cout<<"\nTermina turno de";
  177. cout<<"j1.nombre()"<<endl;
  178. }
  179. }
  180. else
  181. if(x==turn2)
  182. {
  183. imprimir(table);
  184. cout<<"\nTurno de ";
  185. cout<<j2.nombre()<<endl;
  186. for(i=z;i<3;i=i+1)
  187. {
  188. cout<<"\nEscoge una casilla :";
  189. cin>>a[i];
  190. table[a[i]]=fichas[a[i]];
  191. imprimir(table);
  192. }
  193. if((fichas[a[0]]==fichas[a[1]])&&(fichas[a[1]]==fichas[a[2]]))
  194. {
  195. x=turn2;
  196. tot2=tot2+1;
  197. z=0;
  198. table[a[0]]=fichas[a[0]];
  199. table[a[1]]=fichas[a[1]];
  200. table[a[2]]=fichas[a[2]];
  201. cout<<"\nHas encontrado una tercia!!\n";
  202. }
  203.  
  204. else
  205. if((fichas[a[0]]==fichas[a[1]])&&(fichas[a[2]]!=fichas[a[0]]))
  206. {
  207. x=turn1;
  208. z=1;
  209. table[a[0]]=auxi[a[0]];
  210. table[a[1]]=auxi[a[1]];
  211. a[0]=a[2];
  212. table[a[0]]=fichas[a[0]];
  213. cout<<"\nFallaste en una casilla: C\n";
  214. cout<<"\nTermina turno de";
  215. cout<<"j2.nombre()"<<endl;
  216. }
  217. else
  218. if((fichas[a[0]]==fichas[a[2]])&&(fichas[a[1]]!=fichas[a[0]]))
  219. {
  220. x=turn1;
  221. z=1;
  222. table[a[0]]=auxi[a[0]];
  223. table[a[2]]=auxi[a[2]];
  224. a[0]=a[1];
  225. table[a[0]]=fichas[a[0]];
  226. cout<<"\nFallaste en una casilla: C";
  227. cout<<"\nTermina turno de";
  228. cout<<"j2.nombre()"<<endl;
  229. }
  230. else
  231. if((fichas[a[1]]==fichas[a[2]])&&(fichas[a[0]]!=fichas[a[1]]))
  232. {
  233. x=turn1;
  234. z=1;
  235. table[a[2]]=auxi[a[2]];
  236. table[a[1]]=auxi[a[1]];
  237. a[1]=a[0];
  238. table[a[0]]=fichas[a[0]];
  239. cout<<"\nFallaste en una casilla: C";
  240. cout<<"\nTermina turno de";
  241. cout<<"j1.nombre()"<<endl;
  242. }
  243. else
  244. {
  245.  
  246. x=turn1;
  247. z=0;
  248. table[a[0]]=auxi[a[0]];
  249. table[a[1]]=auxi[a[1]];
  250. table[a[2]]=auxi[a[2]];
  251. cout<<"\nFallaste : C";
  252. cout<<"\nTermina turno de";
  253. cout<<"j1.nombre()"<<endl;
  254. }
  255. }
  256. total=tot1+tot2;//suma puntajes de cada jugador
  257. }
  258. while(total<10);//se sale cuando sea =10 y termina la partida
  259.  
  260. j1.numpun(tot1);
  261. j2.numpun(tot2);
  262. if(tot1>tot2)
  263. {
  264. system("color 18");
  265. cout<<"\n¡El ganador es el jugador 1!";
  266. }
  267. else
  268.      if(tot2>tot1)
  269.      {
  270.       system("color 81");
  271.       cout<<"\n¡El ganador es el jugador 2!";
  272.  }
  273.  else
  274.        if(tot1==tot2)
  275.        {
  276.        cout<<"No hay ganador:p\n";
  277.        cout<<"\nPuntos del jugador 1:"<<j1.enpun();
  278.        cout<<"\nPuntos del jugador 2:"<<j2.enpun();
  279.        cout<<"\nGracias por jugar:D";
  280.     }
  281.  
  282.        return(0);
  283. }
  284.  


« Última modificación: 14 Mayo 2017, 02:33 am por engel lex » En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Reemplazar cout [Juego Encontrar Triadas]
« Respuesta #1 en: 14 Mayo 2017, 03:12 am »

Sugiero partir de cero que recortar este programa. No parece ser un ejemplo de buenas practicas.

Por otro lado, si sabes de ciclos, for y printf, sugiero que hagas el reemplazo que propones tu mismo.


En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Reemplazar cout [Juego Encontrar Triadas]
« Respuesta #2 en: 14 Mayo 2017, 14:44 pm »

Lo más complicado será transformar las clases en estructuras y funciones pues necesitas de jugar con archivos de cabecera y los tipos incompletos para emular la ocultación de datos. Pero tampoco es necesario en este ejercicio.
En línea

bitconrad

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Reemplazar cout [Juego Encontrar Triadas]
« Respuesta #3 en: 16 Mayo 2017, 17:32 pm »

Señores lo que pasa es lo siguiente, intente hacer el proceso de impresion del tablero con printf y con 2 ciclos anidados, pero tengo el problema que al correr el programa no me imprime el tablero con la numeracion ordenada como en el codigo que les comparti que si imprime el tablero con la numeracion como deberia ser....

El proceso que hice fue lo basico, dentro de la funcion imprimir hice el cambio, pero a la hora de imprimir el tablero me da 2 columnas con numeros mayores a 48 y las demas con ceros

Que me recomiendan hacer en este caso?  :-\ :-\ les agradezco un monton!!

Código
  1. void imprimir (string tablero[])//cadena llamada tablero para imprimirlo
  2. {
  3. system ("pause");
  4. system ("cls");//refrescar la pantalla en cada turno
  5. cout<<"\t\t CONCENTRECE\n";
  6. cout<<"\t********\n";
  7. cout<<"\t********\n";
  8. int b,i,j;
  9. b=0;
  10. for(i=0;i<5;i=i+1)
  11. {
  12. for(j=0;j<6;j=j+1)
  13. {
  14. printf("%d  ", tablero[i][j]);
  15.  
  16. }
  17. printf("\n");
  18. }
  19. }


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex
« Última modificación: 17 Mayo 2017, 02:12 am por engel lex » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Reemplazar cout [Juego Encontrar Triadas]
« Respuesta #4 en: 16 Mayo 2017, 18:42 pm »

Los códigos se encierran entre etiquetas GeSHi, ver barra de herramientas que tienes justo arriba, y seleccionando el lenguaje apropiado en el menú desplegable.

En referente a tu pregunta entiendo que tratas tablero como un array bidimensional pero solo es de 1 dimensión.

Código:
printf("%d  ", tablero[i][j]);
es totalmente erróneo.

Para solucionar esto tienes varias formas:
Pero la más sencilla es usar un sólo bucle y cada vez que el módulo (el resto de la división) entre i y 5 sea 0 imprimes un caracter de nueva línea.
Así:
Código
  1. int i = 0;
  2. while(i < 30) {
  3.    printf("%2i ", i);
  4.    ++i;
  5.    if(i%6==0)
  6.        printf("\n");
  7. }

Por supuesto hay formas más elaboradas, pero como estás empezando bastará esta.
   
En línea

bitconrad

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Reemplazar cout [Juego Encontrar Triadas]
« Respuesta #5 en: 16 Mayo 2017, 19:29 pm »

Brother muchas gracias por responder, gracias por la aclaracion soy nuevo, lo tendre en cuentra....

Efectivamente tenes razon con el codigo propuesto, imprime la matriz con los numeros a la perfeccion, el problema es, que el tablero impreso tiene la peculiaridad que me permite seleccionar una casilla, en la cual hay contenida una letra, asi como se propone en el codigo: tablero[0], tablero[1]...etc.

Logre hacerlo con "cout" pero al reemplazarlo por printf creo (no estoy seguro) que hay un problema con el tipo de la variable definida en la funcion, si alguien puede darme una mano con el cambio a printf estare muy agradecido

Código
  1. void imprimir (string tablero[])//cadena llamada tablero para imprimirlo
  2. {
  3. system ("pause");
  4. system ("cls");
  5. cout<<"\t\t CONCENTRECE\n";
  6. cout<<"\t********\n";
  7. cout<<"\t********\n";
  8. int b,i,j;
  9. b=0;
  10. for(i=0;i<5;i=i+1)
  11. {
  12. for(j=0;j<6;j=j+1)
  13. {
  14.  
  15. cout<<tablero[b]<<"**";
  16. b=b+1;
  17.  
  18. }
  19. printf("\n");
  20. }
  21. }
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Reemplazar cout [Juego Encontrar Triadas]
« Respuesta #6 en: 16 Mayo 2017, 19:40 pm »

string no existen en C porqué es un tipo de dato propio de C++. Tendrás que cambiar toda referencia a string a cadenas de C, que son arrays de caracteres o punteros a memoria dinámica.
O puedes enredar un poco más y buscar alguna librería que proporcione cadenas.

Aunque lo más fácil es cambiar todos los strings por arrays de caracteres.
Pero con esto no se puede hacer cadena1 == cadena2, en su lugar deberás usar las funciones que proporciona string.h, como strcmp para comparar cadenas.
En línea

bitconrad

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Reemplazar cout [Juego Encontrar Triadas]
« Respuesta #7 en: 18 Mayo 2017, 01:45 am »

Brother muchas gracias me fue de gran ayuda la aclaracion, agradezco el tiempo que se toman para guiarme en esto...

Despues de horas y horas de busqueda y de ensayo y error, al correr el programa me envia este mensaje en consola:
 [Warning] multi-character character constant [-Wmultichar]

Efectivamente me imprime en la matriz numeros de 0 al 9 y me marca este error en las lineas en las que tengo lo siguiente:

Código
  1. char table[]={'00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29'};
  2. char auxi[]={'00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29'};

Que me sugieren? les agradezco su tiempo  ;-) ;-)




En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Reemplazar cout [Juego Encontrar Triadas]
« Respuesta #8 en: 18 Mayo 2017, 01:55 am »

las comillas simples ' representan que lo contenido en ellas es un char, es decir un caracter unico de 8 bit estás colocando 2 caracteres y no sabe que hacer con ello


es como que yo te diga "te daré un envase de 1 litro para llevarte tus 2 litros de agua"
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.
bitconrad

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Reemplazar cout [Juego Encontrar Triadas]
« Respuesta #9 en: 18 Mayo 2017, 02:18 am »

las comillas simples ' representan que lo contenido en ellas es un char, es decir un caracter unico de 8 bit estás colocando 2 caracteres y no sabe que hacer con ello


es como que yo te diga "te daré un envase de 1 litro para llevarte tus 2 litros de agua"
:-\ :-\  Eso estuve leyendo  :-\ :-\ pero el problema es que necesito que me aparezcan desde el 0 hasta el 30, con comilla doble no funciona, entonces en este caso que es lo mas conveniente?
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