Páginas: [1]
|
 |
|
Autor
|
Tema: problema con ingreso de variables en una iteracion. (Leído 374 veces)
|
castillo
Desconectado
Mensajes: 77
|
holaaa!!!, tengo un problema y no se como solucionarlo, aver si alguien puede ayudarme. Aqui va un ejemplo de mi problema. #include <stdio.h> #include <math.h> #include <dos> #include <conio.h>
void main() { int numero=5,numero_ingresado; while (numero!=0) { printf("\nIngresa un numero: "); numero_ingresado=getche(); sleep(5);
/* Si yo ingresara algunos numeros aqui (durante los 5 segundos), en la proxima iteracion se escribirian estos. Eso es lo que no quiero que ocurra.*/
numero--; } getchar(); }
Al compilar este programa se hace una iteracion en donde se pide un numero, al ingresar este, se hace una pausa de 5 segundos en el programa. y comienza una nueva iteracion. Si yo, durante esos 5 segundos de pausa siguiera escribiendo numeros, en la siguente iteracion se aparecerian. Lo que yo quiero es que pida un numero justo despues de printf("\nIngresa un numero: "); y no se produsca el error del numero que se pulsa entre los segundos. Si alguien sabe que puedo hacer que lo postee porfavor.. Gracias Castillo pd: es algo dificil de explicar. Espero que lo hayan entendido.
|
|
|
|
|
En línea
|
|
|
|
sch3m4
Colaborador
Desconectado
Mensajes: 1.528
Nihil est in intelectu quod prius not fuerit insen
|
no te entendí demasiado bien... A ver: Si yo, durante esos 5 segundos de pausa siguiera escribiendo numeros, Si quieres seguir realizando acciones durante los 5 segundos que dura la pausa, tendrías que usar threads. Esto no lo entendí bien: Lo que yo quiero es que pida un numero justo despues de printf("\nIngresa un numero: "); y no se produsca el error del numero que se pulsa entre los segundos.
|
|
|
|
|
En línea
|
|
|
|
Kpax
Desconectado
Mensajes: 317
|
no seria mas facil q durante esos segundos almacenes el valor en otra variable?
|
|
|
|
|
En línea
|
En este mundo una de dos
|
|
|
|
ANELKAOS
|
Prueba esto, no tengo compilador aki asiq no lo puedo probar. #include <stdio.h>
void main() { int numero=5,numero_ingresado; while (numero!=0) { printf("\nIngresa un numero y pulsa Enter: "); scanf("%d",&numero_ingresado); numero--; sleep(5); } getchar(); }
|
|
|
|
|
En línea
|
|
|
|
castillo
Desconectado
Mensajes: 77
|
Al parecer no me explique muy bien. creo que solo anelkaos me entendio. Pero aun asi su codigo aun tiene mi mismo problema. Aver si me explico mejor (fijense en el comentario,, ojala se entienda): #include <stdio.h> #include <math.h> #include <dos> #include <conio.h>
void main() { int numero=5,numero_ingresado; while (numero!=0) { printf("\nIngresa un numero: "); numero_ingresado=getche(); sleep(5);
/* si ingresas un numero durante los 5 segundos de espera, este numero quedara en espera y cuando empieza una nueva iteracion este mismo numero se ingresara solo en la variable numero_ingresado mediante el getche(); , eso es lo que no tiene que pasar. lo que yo quiero que ocurra es que al iniciar la iteracion se borre esta especie de numero almacenado.*/ numero--; } getchar(); } o con este otro ejemplo que es mucho mas simple (creo q con este ejemplo se va a entender mi problema): #include <stdio.h> #include <windows.h> #include <dos.h>
void main() { printf("Ingresa un texto:"); sleep(5);
/*durante los 5 segundos ingresen texto(cualquier cosa). se van a dar cuenta de que este no se muestra por la pantalla (hasta pasados los 5 segundos) al entrar en el getchar();. entonces... lo que yo quiero es .... que el texto ingresado durante esos 5 segundos se borre y que luego de esto se haga la peticion de texto.*/
getchar(); }
pd: ojala se haya entendido esto. como dije anteriormente "es algo dificil de explicar". si alguien no me entiende y quiere ayudarme, que me agregue al msn: slashytu@hotmail.com
|
|
|
|
|
En línea
|
|
|
|
|
ANELKAOS
|
Ahora si q lo entendí jeje, lo que debes hacer es limpiar el buffer, creo q se hacia con fflush o free, justo despues del sleep(5); Haciendolo así te funciona perfectamente
|
|
|
|
|
En línea
|
|
|
|
castillo
Desconectado
Mensajes: 77
|
antes de crear este hilo en el foro ya habia probado con fflush( stdin ); pero no me dio resultado ....
|
|
|
|
|
En línea
|
|
|
|
Cab Calloway
Colaborador
Conectado
Mensajes: 4.293
|
flushall();
?
Saludos!
|
|
|
|
|
En línea
|
Max 400; caracteres restantes: 366
|
|
|
|
heap
|
#include <stdio.h> #include <unistd.h> int main(){ int numero=5,numero_ingresado = 0, i; for(;numero>0; numero--){ printf("\nIngresa un numero y pulsa Enter: "); while(( i = getchar()) != '\n' && i != EOF){ if (i>= '0' && i <= '9') { numero_ingresado = 10 * numero_ingresado + (i - '0'); } } sleep(3); fflush(NULL); }
return 1 ; }
Hmm aparte de los miles de errores que tenias, esto se deshara de culquier stream que tengas pero el problema es que si los escribes durante sleep() y no das enter, no se envia a ningun stream como stdin ni nada, asi que no veo como. Igual leete un libro de programacion, pork si asi haces tus programas.........
|
|
|
|
|
En línea
|
|
|
|
|
ANELKAOS
|
Hmm aparte de los miles de errores que tenias, esto se deshara de culquier stream ??? que tengas pero el problema es que si los escribes durante sleep() y no das enter, no se envia a ningun stream ??? como stdin ni nada, asi que no veo como. Igual leete un libro de programacion, pork si asi haces tus programas.........
Programar con el bloc de notas no es lo mio  jajaja Solo un apunte heap stream != string y el código se lo copié a castillo simplemente kité lo q sobraba y después le dije lo del fflush. 
|
|
|
|
|
En línea
|
|
|
|
|
heap
|
Hmm aparte de los miles de errores que tenias, esto se deshara de culquier stream ??? que tengas pero el problema es que si los escribes durante sleep() y no das enter, no se envia a ningun stream ??? como stdin ni nada, asi que no veo como. Igual leete un libro de programacion, pork si asi haces tus programas.........
Programar con el bloc de notas no es lo mio  jajaja Solo un apunte heap stream != string y el código se lo copié a castillo simplemente kité lo q sobraba y después le dije lo del fflush.  fflush(NULL) se deshace de todos los streams. Y un string si es igual a un stream, ambos son archivos 
|
|
|
|
|
En línea
|
|
|
|
|
ANELKAOS
|
Nunca te acostaras sin saber algo nuevo de C++  Gracias heap  otra cosa q he aprendido, yo m iva x la cadena string y el streaming del NTFS.
|
|
|
|
|
En línea
|
|
|
|
castillo
Desconectado
Mensajes: 77
|
hola heap. no c si es mi compilador (borland c++ builder 6.0) u otra cosa, pero no me funciona tu codigo. osea si me funciona compila y sin ningun error, pero me sigue ocurriendo el mismo problema de siempre,el de que sigue tomando en cuenta los numero de el tiempo de espera en el codigo. oye ,, como soy principiante en esto de la programacion me gustaria q me dijeran mis errores de programacion.... y que libro me recomendarian jaja... 
|
|
|
|
|
En línea
|
|
|
|
|
heap
|
PAra aprender C compra el lenguaje C de kernighan y ritchie. Como compilador siempre he usado gcc y no tengo idea de borland. Si quieres deshacerte de el input de el usuario despues de el sleep, ni fflush ni ninguna funcion te lo hara. Lo que puedes hacer es leer el input luego del sleep, y descartarlo  eso es lo que yo haria. Errores me refiero a usar scanf etx Ademas utilizas cosas como conio.h que no son portables y no se requieren.......
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: [1]
|
|
|
|