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

 

 


Tema destacado:


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

Desconectado Desconectado

Mensajes: 38


Ver Perfil
ayuda repeticion
« en: 8 Mayo 2015, 18:14 pm »

Tengo el siguiente codigo:

Código
  1.  char fichaX = 'x',fichaC= 'o';
  2.  char jug1,jug2,temp;
  3.  
  4.  
  5.  do{
  6.  printf("introduce ficha jug 1  x o o: ");
  7.  scanf("%c",&jug1);
  8.  }while(jug1!=fichaX || jug1!=fichaC);
 
Y el problema es que al introducir cualquier letra me repite dos veces seguidas el printf aunque introduzca tb la x || o

A que puede deberse?

Mod: Los códigos deben ir en etiquetas GeSHi


« Última modificación: 8 Mayo 2015, 18:21 pm por engel lex » En línea

Choke1

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: ayuda repeticion
« Respuesta #1 en: 9 Mayo 2015, 17:07 pm »

Nadie?


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ayuda repeticion
« Respuesta #2 en: 9 Mayo 2015, 17:46 pm »

El problema se debe a que el especificador "%c" se traga (procesa) el primer carácter que se encuentre en la entrada estándar sin importar cual sea este. Si tu tecleas:
Código:
x{ENTER}
Ahí tienes dos caracteres ('x' y '\n') los cuales generan el comportamiento que mencionas.

Para solucionarlo, esto es, descartar el espacio blanco inicial de forma similar a los otros especificadores como "%d", "%s", etc. basta con utilizar " %c" (un espacio antes de caracter '%').

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Choke1

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: ayuda repeticion
« Respuesta #3 en: 9 Mayo 2015, 18:02 pm »

Gracias y sabes porque si meto x ó o y me sigue sin salir del bucle??
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ayuda repeticion
« Respuesta #4 en: 9 Mayo 2015, 18:28 pm »

Porque estas utilizando el operador OR cuando deberías utilizar AND. Cambia el bucle a:
Código
  1. do {
  2.   printf("introduce ficha jug 1  x o o: ");
  3.   fflush(stdout);
  4.   scanf(" %c", &jug1);
  5. }while (jug1 != fichaX && jug1 != fichaC);

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Choke1

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: ayuda repeticion
« Respuesta #5 en: 9 Mayo 2015, 18:39 pm »

Claro joder XD gracias por la ayuda!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Repeticion de movimiento en Flash
Diseño Gráfico
Jericho 2 2,114 Último mensaje 23 Julio 2005, 00:49 am
por Jericho
Impedir la repetición de una acción? « 1 2 »
PHP
Servia 13 4,649 Último mensaje 13 Febrero 2010, 13:08 pm
por Servia
Palabras aleatorias SIN repeticion [ayuda] « 1 2 »
Programación Visual Basic
Psyke1 11 10,355 Último mensaje 15 Junio 2010, 23:55 pm
por Psyke1
Wds y repeticion de paquetes
Redes
Hacker wifi 3 3,792 Último mensaje 31 Agosto 2010, 21:33 pm
por Hacker wifi
Combinacion Sin repeticion ,en java , Ayuda!!!
Java
k3ni9 0 3,562 Último mensaje 7 Marzo 2016, 01:57 am
por k3ni9
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines