C/Visual C - problema con Do..While

 
Vista:

problema con Do..While

Publicado por young (3 intervenciones) el 04/01/2011 23:23:01
Hola,soy nuevo en programacion C y tengo un problema con un programa....al usarlo solo con la funcion switch me ejecuta correcto pero cuando intento meterle un do...while o un for para que me lo ejecute de seguido solo me da problemas... no se si es un problema en cuanto a la colocacion de las llaves.....o que tal vez en los "case" haya algun fallo..he probado con las llaves en todos los lados,cambiar char por int.....,"case"s con comillas,sin ellas...tambien he puesto un numero en el while pensando que tal vez una letra no pueda ir con el simbolo "!="...no se!!

#include<stdio.h>

int main() {

char tecla;

do {

printf("Escribe un caracter: ");
scanf("%c", &tecla);

switch (tecla)
{
case ' ': printf("es el espacio\n");
break;
case '1':
case '2':
case '3' :
case '4' :
case '5':
case '6':
case '7':
case '8':
case '9': printf("es un numero\n");
break;
case 'a' :
case 'e':
case 'i':
case 'o':
case 'u': printf("es una voKal\n");
break;

default: printf("es una consonante\n");
break;

} while(tecla!='x');
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema con Do..While

Publicado por pepe (32 intervenciones) el 04/01/2011 23:29:59
#include<stdio.h>

int main() {

char tecla;

do {

printf("Escribe un caracter: ");
scanf("%c", &tecla);

switch (tecla)
{
case ' ': printf("es el espacio\n");
break;
case '1':
case '2':
case '3' :
case '4' :
case '5':
case '6':
case '7':
case '8':
case '9': printf("es un numero\n");
break;
case 'a' :
case 'e':
case 'i':
case 'o':
case 'u': printf("es una voKal\n");
break;

default: printf("es una consonante\n");
break;

}
}while(tecla!='x');
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con Do..While

Publicado por young (3 intervenciones) el 05/01/2011 11:49:09
Gracias por el intento pepe pero sigue sin ejecutar bien,el programa lo compilo y ejecuto en la consola de ubuntu y me repite lo que ha de hacer....

Escribe un caracter:b
es una consonante
Escribe un caracter;es una consonante
Escribe un caracter:x
Es una consonante

Es decir....la frase"es una consonante" me la repite 2 veces antes de que introduzca el nuevo caracter.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con Do..While

Publicado por young (3 intervenciones) el 05/01/2011 12:07:28
Parece que la solucion estaba en añadir un fflush(stdin) despues del scanf.Ahora ejecuta bien.Aunque sigo sin entender bien por que ahora si funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con Do..While

Publicado por Carlos (15 intervenciones) el 05/01/2011 13:58:46
Hay veces que al recoger un caracter de un dispositivo de entrada, aunque se lea del buffer del dispositivo, este no se vacia, es decir, el caracter se queda ahi, por lo que en la siguiente lectura encontrara lo mismo y el programa actuara de igual forma. La funcion fflush() vacia el buffer que le pases como parametro, por lo que al estar vacio es programa puede interpretar el caracter que realmente has escrito y no el que habia.

Puede comprobar esto sacando por pantalla el valor de tu variable tecla inmediatamente despues de leer del teclado el caracter escrito, asi sabras que es lo que realemente esta interpretando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con Do..While

Publicado por young (1 intervención) el 07/01/2011 14:56:54
Entiendo ahora mejor,muchas gracias por tu explicacion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar