/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

reemplazar el fflush(stdin) en lenguaje C.

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
lautarolaruso



Registrado: 07 Ene 2012
Mensajes: 3

MensajePublicado: 07/01/2012 4:00 pm
Título: reemplazar el fflush(stdin) en lenguaje C.

buenas tardes, el problema es el siguiente, necesito reemplazar el fflush(stdin)
porque como bien se no siempre anda y este es mi caso. pero particularmente, nada de lo que busco en foros y la veb en general me esta sirviendo, probe con muchas funciones y nada, siempre estoy a un pelo pero no es lo que necesito.

el codigo es este:(tiene muchas librerias de cosas que fui probando eso no es lo importante)


#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
#include <time.h>
#include <iostream>
#include <windows.h>
#include <string.h>

//------prototipos de funciones--------

int seleccionarDificultad(void);
void juego(int);
void limpia(void);

//-----------------------------------

main(){

int x;
char continua='1';
srand(time(NULL));

printf("\t\t\t********************************\n");
printf("\t\t\t* *\n");
printf("\t\t\t* EL juego de la memoria *\n");
printf("\t\t\t* *\n");
printf("\t\t\t********************************\n\n\n");

printf("REGLAS: \n");
printf("el juego consiste en probar tu memoria recordando numeros.\nComplete los 3 actos para ganar.\n\n\n");

while(continua == '1'){
x = seleccionarDificultad();
if( x != 4)
juego(x);
printf("fin del juego.\n\n");

printf("desea volver a jugar?\n");
printf("\"1\" para SI\n");
printf("\"2\" para NO\n\n");
do{
continua = getch();
}while(continua != '1' && continua != '2');
clrscr();

}

printf("\n");
getch();
}






int seleccionarDificultad(void){

char a;

printf("SELECIONE UN NIVEL DE DIFICULTAD:\n\n");
printf("presione \"1\" para nivel facil.\n");
printf("presione \"2\" para nivel medio.\n");
printf("presione \"3\" para nivel dificil.\n");
printf("\"4\" para salir.\n");
do{
a = getche();
if(a != '1' && a != '2' && a != '3' && a != '4')
printf("\nreingrese: \n");
}while(a != '1' && a != '2' && a != '3' && a != '4');
clrscr();

switch(a){

case '1':
return 1;
break;
case '2':
return 2;
break;
case '3':
return 3;
break;
default: return 4;
break;
}
}





void juego(int w){


int vidas;
int facil1[6];
char facil2[6];
int medio1[7];
char medio2[7];
int dificil1[8];
char dificil2[8];
int i;
int bandera;
int acto;
int y;



switch(w){

case 1:

vidas = 3;
acto = 1;
bandera = 0;

while(vidas > 0 && acto == 1){

printf("\tseleccionaste nivel: \"memoria de pescado\"\n\n\n\n");
printf("ACTO I vidas: %d de 3\n", vidas);
printf("------\n\n");

printf("Memorize estos numeros: \n");
for(i=1; i <= 5; i++){
facil1[i] = (1 + rand() % 9);
printf("%d ", facil1[i]);
}



for(i=2; i >= 0; i--){
gotoxy(1,11);
printf("tiempo restante: %d",i);
if(i<3)
//printf("\a");
sleep(1);
}

limpia(); ////ACA ESTA ELPROBLEMA<<<<------
clrscr();

printf("\tseleccionaste nivel: \"memoria de pescado\"\n\n\n\n");
printf("ACTO I vidas: %d de 3\n", vidas);
printf("------\n\n");

printf("\n");
printf("ingrese los numeros\n\n");

bandera = 0;
y=1;

while(bandera == 0 && y <= 5){


facil2[y] = getch();


if(facil1[y] == facil2[y]-48)
printf("%c Correcto\n",facil2[y]);
else{
printf("%c Incorrecto\n",facil2[y]);
printf("PIERDE UNA VIDA\n");
printf("cargando...");
sleep(3);
bandera++;
vidas--;
}
y++;
}
if(bandera == 0)
acto++;
clrscr();
}}}




void limpia(void)
{
int ch;


while( (ch = fgetc(stdin)) != EOF && ch != '\n'){}
}


//----------------------------------------------





Al compilarlo ban a ver que mientras corre ese temporizador "casero" si ingresan datos, quedan guardados en pantalla, por mas que sean ignorados por el programa...necesito corregir eso, ya estoy casi frustrado, estoy hace muchisimo tiempo estancado ese lugar. espero que alguien experimentado encuentre una solución y desde ya les digo que es un reto que parece facil pero para mi que no lo es , abra que ponerce firme para resolverlo.


cuando lo compilen, elijan "dificualtad 1" ya que las otras 2 difultades no las postie , por cuestiones de extencion, igual son exactamente iguales , con menos tiempo en el temporizador.

[/code]
Volver arriba
lautarolaruso



Registrado: 07 Ene 2012
Mensajes: 3

MensajePublicado: 09/01/2012 4:18 pm
Título:

algún moderador borre el tema, ya esta "solucionado" es decir, use mañas.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 6586
Ubicación: Mexico

MensajePublicado: 18/01/2012 6:15 pm
Título:

Un detalle con el programa es que no es C, es C++.

En cuanto a tener que descartar el resto de una linea ingresada por el usuario en tu programa no es necesario ya que cada carácter se procesa de inmediato ya sea como la opción (los caracteres '1' a '4') o bien como uno de los números ingresados (como los caracteres '1' a '9' que pasas a enteros restando '0'). Lo único con lo que hay que tener cuidado es teclear los números sin espacios ya que el programa no lo maneja.

Pero bueno, como ya lo resolviste supongo no hay problema con ello.

Un saludo
_________________
Memory never recaptures reality. Memory reconstructs. All reconstructions change the original, becoming external frames of reference that inevitably fall short.
--
Mentat Handbook
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com