Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Beginner Web en 4 Julio 2018, 22:29 pm



Título: Ayuda con algoritmo recursivo y fflush(stdin)
Publicado por: Beginner Web en 4 Julio 2018, 22:29 pm
Hola a todxs queria saber si este algoritme esta recursivamente bien , y otra consulta es para que sirve , es viable el uso de fflush(stdin) en limpieza del buffer, estoy algo indecise, gracias a todxs


Código
  1. void como_la_realidad(int vida)
  2. {
  3. if(vida<=1)
  4. cout << "Entrando en el sueño";
  5. else
  6. como_la_realidad(vida-1);
  7. cout << " del sueño";
  8. }


Título: Re: Ayuda con algoritmo recursivo y fflush(stdin)
Publicado por: MAFUS en 4 Julio 2018, 23:27 pm
En lo referente a fflush(stdin): el estándar dice que fflush solo es para flujos de salida así que depende del compilador que funcione o no. Cómo norma general no deberías usarlo.

En cuanto a la recursividad: sí, está bien hecha. Tiene una condición de parada, una llamada que actualiza un estado para que active la condición de parada en el momento oportuno y un trabajo a cumplir.

Lo que hace es escribir en pantalla: Entrando en el sueño del suelo... repitiendo tantas veces del sueño como se hayan indicado en el argumento de llamada.

Por cierto, no destroces el lenguaje con x y e. El español es un de los lenguajes más ricos que existen.


Título: Re: Ayuda con algoritmo recursivo y fflush(stdin)
Publicado por: Beginner Web en 4 Julio 2018, 23:44 pm
En lo referente a fflush(stdin): el estándar dice que fflush solo es para flujos de salida así que depende del compilador que funcione o no. Cómo norma general no deberías usarlo.

En cuanto a la recursividad: sí, está bien hecha. Tiene una condición de parada, una llamada que actualiza un estado para que active la condición de parada en el momento oportuno y un trabajo a cumplir.

Lo que hace es escribir en pantalla: Entrando en el sueño del suelo... repitiendo tantas veces del sueño como se hayan indicado en el argumento de llamada.

Por cierto, no destroces el lenguaje con x y e. El español es un de los lenguajes más ricos que existen.


Entonces es mejor usar cin.ignore(); para evitar el error con ingreso de cadenas? te pongo este ejemplo, porque luego de ingresar la variable entera dni, me guarda el ENTER en el buffer

Código
  1. main()
  2. { int dni;
  3.  tcad nombre;
  4.  cout << "Ingrese DNI: ";
  5.  cin >> dni;
  6.  //fflush(stdin); Aca viene el error
  7.  cout << "Ingrese nombre: ";
  8.  gets(nombre);


Título: Re: Ayuda con algoritmo recursivo y fflush(stdin)
Publicado por: MAFUS en 5 Julio 2018, 00:10 am
Sí, o cin >> ws para eliminar los espacios en blanco. Hay unas cuantas formas de hacerlo.