Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Problemas con while y getch

Estas en el tema de Problemas con while y getch en el foro de C/C++ en Foros del Web. Tengo el siguiente codigo para calcular el sueldo de un empleado #include <stdio.h> #include <conio.h> int main (){ int nhrn, nhre, sue; char nom[40], desea; ...
  #1 (permalink)  
Antiguo 07/03/2014, 23:10
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 2 meses
Puntos: 0
Problemas con while y getch

Tengo el siguiente codigo para calcular el sueldo de un empleado

#include <stdio.h>
#include <conio.h>

int main (){
int nhrn, nhre, sue;
char nom[40], desea;

do{
printf("Digite el nombre del empleado: \n");
gets(nom);
fflush(stdin);
printf("Digite el numero de Horas normales trabajadas: \n");
scanf("%d",&nhrn);
printf("Digite el numero de Horas extras trabajadas: \n");
scanf("%d",&nhre);
if(nhre<=10){
sue=nhrn*4000+nhre*5000;
}
else sue=nhrn*4000+((nhre-10)*5700)+((nhre-(nhre-10))*5000);
printf("El sueldo de %s es %d\n",nom,sue);
printf("¿Desea procesar otro empleador s/n ?");
getch(desea);
}while(desea=='s');

}

Tengo un problema y es que en las ultimas lineas no me lee desea y no se cumple la sentencia do-while; agradezco su colaboracion.
  #2 (permalink)  
Antiguo 08/03/2014, 03:28
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Problemas con while y getch

Revisa tu manual de referencia sobre la funcion getch:

Código C:
Ver original
  1. int getch(void)

No espera ningun argumento al que asignarle algo sino que retorna el ascii del caracter. De todas formas si no usas conio para otra cosa que para el getch puedes quitarla y usar getchar:

Código C:
Ver original
  1. do {
  2.     ...
  3.     desea = getchar();
  4. } while(desea == 's');

Ademas tienes que vaciar el buffer de entrada estandar despues de cada scanf, getchar y gets (ese ultimo ya lo tienes).

Revisa tambien tu manual de referencia para el fflush, en algunos s.o. no se comporta tal como se espera; como alternativa tienes la opcion de forzar el vaciado del bufer de entrada estandar manualmente:

Código C:
Ver original
  1. void fflush_stdin() {
  2.     while((c = getchar()) != '\n' && c != EOF)
  3. }

Suerte con eso

Saludos
vosk
  #3 (permalink)  
Antiguo 13/03/2014, 19:46
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Problemas con while y getch

Murchas gracias man.
Cita:
Iniciado por vosk Ver Mensaje
Revisa tu manual de referencia sobre la funcion getch:

Código C:
Ver original
  1. int getch(void)

No espera ningun argumento al que asignarle algo sino que retorna el ascii del caracter. De todas formas si no usas conio para otra cosa que para el getch puedes quitarla y usar getchar:

Código C:
Ver original
  1. do {
  2.     ...
  3.     desea = getchar();
  4. } while(desea == 's');

Ademas tienes que vaciar el buffer de entrada estandar despues de cada scanf, getchar y gets (ese ultimo ya lo tienes).

Revisa tambien tu manual de referencia para el fflush, en algunos s.o. no se comporta tal como se espera; como alternativa tienes la opcion de forzar el vaciado del bufer de entrada estandar manualmente:

Código C:
Ver original
  1. void fflush_stdin() {
  2.     while((c = getchar()) != '\n' && c != EOF)
  3. }

Suerte con eso

Saludos
vosk

Etiquetas: int, numero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:09.