mi pregunta, ¿Hacen la misma funcion?¿y que diferencia hay en colocar un fflush(stdin) y un fflush(stdout). Yo pues la verdad, me gusta experimentar metiendo codigos y ver como interactuan, pero la verdad esque no veo que me altere ni me modifique el programa si las utilizo o no...
Podemos pensar a priori que fflush(stdin) limpia el buffer de entrada del stdin (teclado) ya que por su parte fflush(stdout) limpia el buffer de salida enviandolo al stdout (pantalla), pero no es asi ya que fflush(stdin) no esta definido en el estandar y su comportamiento es algo totalmente imprevisible. En la chincheta de este foro lo explican mas detalladamente:
http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.htmlPD: esta bien que en los codigos utilize quebrados(fracciones), o debería utilizar decimales, lo digo en el caso de la segunda funcion en donde debo validar el valor ingresado por el usuario
Ese -1/2 que tienes en tu codigo, el lenguaje C lo interpreta como una division entre dos numeros enteros (tipo int) y su resultado debera ser un numero entero (de tipo int). Si el resultado de la operacion matematica contiene decimales C lo redondea para convertirlo en un numero entero. En este caso el lenguaje C transforma tu -1/2 a 0. Esto lo puedes comprobar facilmente:
if(0 == (-1/2))
printf("cierto");
else
printf("falso");
Lo mas sencillo seria que cambiases el -1/2 por su valor de -0.5. Otra opcion que tambien tienes, seria sustituir esa division entre numeros enteros (tipo int) por una division entre numeros decimales (tipo float), solo has de añadirle una parte decimal es decir, en lugar de escribir -1/2 escribes -1.0/2.0. Para nosotros los humanos -1/2 es lo mismo que -1.0/2.0 pero para el lenguaje C no lo es.