Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Nico01 en 19 Julio 2015, 02:01 am



Título: ayuda: kbhit() en iterador en c++
Publicado por: Nico01 en 19 Julio 2015, 02:01 am
estoy programando necesito saber como hacer lo siguiente:
que el ciclo se repita cuando yo apreto una tecla pero que se termine cuando apreto escape
basicamente lo que tengo que hacer es esto:
 Realiza un programa que genere las estadísticas de un jugador de ajedrez. Para ello se ingresara sucesivamente las letras G o P (Gano, Perdió)  Hasta que se presione ESC. Se debe ir informando en cada partido: Cantidad de partidos jugados, ganados y perdidos, racha (cantidad de partidos ganados o perdidos en forma consecutiva, los ganados como un número positivo, los perdidos como uno negativo), mejor y peor racha.


Título: Re: ayuda por favor
Publicado por: engel lex en 19 Julio 2015, 02:52 am
Hola! veo que eres nuevo en el foro, te aclaro lo siguiente que es parte de las reglas del foro

primero, el titulo debe ser descriptivo
segundo, muestra tu código, puede ayudar
tercero, recomiendo aclarar lo que haces ya que podría ser con una librería diferente según el caso


Título: Re: ayuda sobre el lenguaje c++
Publicado por: Nico01 en 19 Julio 2015, 03:02 am
gracias ya lo modifique un poco espero que alcanze ya que no hice el codigo todavia y me da verguenza usar pseudo codigo


Título: Re: ayuda sobre el lenguaje c++
Publicado por: DarK_FirefoX en 19 Julio 2015, 03:07 am
gracias ya lo modifique un poco espero que alcanze ya que no hice el codigo todavia y me da verguenza usar pseudo codigo

Eso tampoco es descriptivo! Y si no tienes nada hecho, puedes intentar hacer algo y estaremos dispuesto a ayudarte en lo que no puedas. Pero debes intentarlo.

Salu2s



Título: Re: ayuda sobre el lenguaje c++
Publicado por: Nico01 en 19 Julio 2015, 03:20 am
okey lo lamento no se muy bien expresarme pero e hecho un intento  aqui esta el codigo sin mostrar los resultados:
Código
  1. #include<iostream>
  2. #include<conio.h>
  3. #include<stdlib.h>
  4. using namespace std;
  5. int main()
  6. {
  7.    int cg=0,cp=0,cc=0,c=0;//contador partidas ganadas, perdidas ,consecutivas, contador de partidas
  8.    char op;
  9.    bool repeat=true;
  10.    while(repeat==true)
  11.        c++;
  12.        cout<<"A ganado o perdido G o P ?"<<endl;
  13.        cin>>op;
  14.        if(op=='G'){
  15.            cg++;
  16.            cc++;}
  17.         else {
  18.            cp++;      
  19.            cc--;}
  20.        if(kbhit())
  21.        {
  22.            char s= getch();
  23.            switch (s) {
  24.            case 27:
  25.                repeat=false;
  26.                break;
  27.                        }
  28.        }
  29.  
  30.  
  31.  
  32.    return 0;
  33. }


si hay algo mal o algo que deba saber por favor muestrenme

olvide poner el contador de partidas generales al principio del ciclo antes de las decisiones

Mod: Los códigos deben ir en etiquetas GeSHi... modifica el titulo del problema, "ayuda sobre el lenguaje c++" no indica sobre que va el problema, no hagas doble post, usa el boton modificar


Título: Re: ayuda: kbhit() en iterador en c++
Publicado por: DarK_FirefoX en 19 Julio 2015, 05:14 am
Hola, he visto tu código y tienes varios errores con respecto al mismo. Primero, todo lo que tienes después del while debes encerrarlo en {}, porque todo eso se va a ejecutar mientras vayas leyendo. Ahora, también una sugerencia, utiliza nombres descriptivos para las variables, o sea, si vas a crear una variable para contar las partidas ganadas, utiliza algo como partidasGanadas, así tu código será más legible.

No obstante, no manejo muy bien C++ y me encontré con el problema de que tienes que leer los caracteres G y P para identificar si "el jugador" ganó o perdió, y identificar la pulsación de la tecla ESC, lo cual me parece algo complicado para un ejercicio de una persona que está empezando a programar en C++, lo normal(mas sencillo) sería hasta que se encuentre una linea en blanco, no obstante, estuve mirando, y aquí te explican una manera de hacerlo, o sea, como capturar el ESC, pues como te puedes dar cuenta la consola está destinada a leer caracteres y esperar por un retorno de linea (o sea, ENTER), en el ejemplo que te ponen en esta lugar: http://stackoverflow.com/questions/20175165/read-int-numbers-from-cin-until-esc-is-pressed-c (http://stackoverflow.com/questions/20175165/read-int-numbers-from-cin-until-esc-is-pressed-c) modifican el buffer de la entrada estándar para que no espere el salto de linea.

Lee eso y mira a ver que puedes ir sacando de ahi. Lo demás solo es cuestión de llevar la suma en los contadores y las variables para calcular la racha.

Salu2s


Título: Re: ayuda: kbhit() en iterador en c++
Publicado por: Nico01 en 19 Julio 2015, 16:58 pm
hola gracias , pero igual mente en el compilador que uso si acomodo las lineas en orden de prioridad no hace falta las llaves como todo va secuencial hasta que se iguala la linea , y  no es que recien empiezo a programar , por cierto aqui tengo un tipico caso de deteccion de eventos el temas es el siguiente: yo analizo las respuestas en forma de char pero si en el sub proceso interno el kbhit se activa (pulsando cualquier tecla[lo que sucede tambien con la g o p]) y detecta al caracter que se encuentra en la posicion 27 en la tabla ascii , entonces se cambia la condicion y el ciclo se rompe , porque si usara solo getch o cin, me frenaria el programa para pedirme algo que no sea g o p en cullo caso no serviria , ya que yo necesito que el programa se ejecute mientras no se presione esc, igual gracias y me fijare el link que comentaste.
el hecho de que despues use llaves fue fiaca de ordenar .