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

Función leer un el buffer de entrada hasta encontrar un entero

Estas en el tema de Función leer un el buffer de entrada hasta encontrar un entero en el foro de C/C++ en Foros del Web. Hola muy buenas, estoy estudiando ing. informática y me han pedido que haga una función que lea el buffer de entrada y vaya desechando caracteres ...
  #1 (permalink)  
Antiguo 02/05/2012, 05:14
 
Fecha de Ingreso: mayo-2012
Mensajes: 60
Antigüedad: 11 años, 11 meses
Puntos: 0
Pregunta Función leer un el buffer de entrada hasta encontrar un entero

Hola muy buenas, estoy estudiando ing. informática y me han pedido que haga una función que lea el buffer de entrada y vaya desechando caracteres hasta encontrar un entero, y entonces debe devolver ese entero.
la verdad es que no lo entiendo.
el prototipo seria:
int getInt(void){
....

Gracias por la ayuda.
  #2 (permalink)  
Antiguo 02/05/2012, 05:38
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Función leer un el buffer de entrada hasta encontrar un entero

Código C:
Ver original
  1. int getInt(void){
  2.     int num, i;
  3.     char c;
  4.     do {
  5.         i = scanf("%d",&num);
  6.         if (i != 1)  scanf("%c",&c);
  7.     } while ( i != 1 );
  8.      return num;
  9. }
  #3 (permalink)  
Antiguo 02/05/2012, 06:00
 
Fecha de Ingreso: mayo-2012
Mensajes: 60
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Función leer un el buffer de entrada hasta encontrar un entero

voy a probarlo muchas gracias por la ayuda!
  #4 (permalink)  
Antiguo 02/05/2012, 06:07
 
Fecha de Ingreso: mayo-2012
Mensajes: 60
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Función leer un el buffer de entrada hasta encontrar un entero

Si que me funciona muchas gracias!!!!!!!!!!!!!!!!!
te queria preguntar una duda, puedes explicarme como escaneas el caracter y luego si no es un nº se escanea el siguiente, por que solamente veo scanf(%c)
o es simplemente que ello solo va escaneando sin necesidad de indicar nada?
  #5 (permalink)  
Antiguo 02/05/2012, 06:12
 
Fecha de Ingreso: mayo-2012
Mensajes: 60
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Función leer un el buffer de entrada hasta encontrar un entero

no sé si me he explicado bien
¿cómo vas desechando caracteres? eso es lo que no entiendo
  #6 (permalink)  
Antiguo 02/05/2012, 06:32
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Función leer un el buffer de entrada hasta encontrar un entero

El scanf consume el buffer si encuentra lo que necesita... por eso primero pido un entero (%d)... Fiajte que el scanf retorna un valor...ademas de asignar...el valor de retorno indica cuantos patrones se encontraron. En este caso se pidio un entero, si se encontro devuelve uno..sino un cero...

Asi que en el if pregunto si i es distinto de uno. Si es distinto de uno, le pido al scanf que me de un caracterer. Un caracter siempre va a ser leido....

Luego repito esta operacion hasta que encuentre el entero.

Ejemplo:
Buffer de entrada: as125

1 - No encuetro un entero, scanf devuelve 0. Consumo caracter 'a'
2 - No encuentro un entero, scanf devuelve 0. Consumo caracter 's'
3 - Scanf encuentra un entero y lo alamcena en num. i = 1. Entonce se termina el Do{}While;

Saludos
  #7 (permalink)  
Antiguo 02/05/2012, 08:17
 
Fecha de Ingreso: mayo-2012
Mensajes: 60
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Función leer un el buffer de entrada hasta encontrar un entero

muchas gracias ya lo he entendido

Etiquetas: .c++, entrada, funcion, leer., lenguaje.c, programacion, teclado, caracteres
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 22:41.