Cita de: amchacon en 9 Marzo 2013, 12:27 PM
Cambia de manual, cualquier manual que icentive el uso de conio y de void main denota la poca habilidad del autor.
El error que ocurre es algo frecuente en las entradas en C (menos mal que yo me pasé a C++). Lo normal es que los datos se lean enteros pero a veces se cuela basurilla... Prueba poner esto después del ultimo scanf:
..........................................
PD: Un consejo, yo no empezaría con C sino que me iría a C++... Hay muchas más funciones, herramientas y menos limitaciones... Además cuando ya lleves un buen nivel, podrás empezar con la programación orientada a objetos sin problemas.
Es como ser del Atlético de Madrid se es porque se es. Si es por eso y por la comodidad de tener más funciones "a mano" mejor te pasas a Pyttho, Ruby o el mismo basic. Sé que es más "duro" tener que implementar uno mismo ciertas funciones que da ya hechas el C++ pero eso "curte" como programador y como dije es como ser del Atleti.
Y en este caso la "basurilla" se elimina dejando simplemente un espacioen blanco en los scanf, tipo:
Código [Seleccionar]
scanf(" %f",&si);
CitarPor cierto no acabo de entender esto, no hace nada?:
Código (c) [Seleccionar]
scanf("%[^\n]",nom);
Es un formato del scanf, cosas del bendito C, que permite entrar una cadena con espacios en blanco, aunque debería indicar con un número la cantidad de carateres a tomar. Haría la misma función de esa manera que fgets.
CitarPor otro lado:Código (c) [Seleccionar]gets(nom);
Mucho cuidado con gets, si insertas un texto mayor que la variable char (en este caso 30) podría dar lugar a errores extraños... De hecho no se recomienda usar esa función.
Es más aconsejable, como bien dice amchacon, el uso de fgets:
Código [Seleccionar]
fgets(nom,31,stdin);
Saluditos!. ....
![](https://st.forocoches.com/foro/images/smilies/aaaaa.gif)
P.D: Además de conio te sobran las librerías math y windows.