Bueno, en mis ratillos de aburrimiento me pongo a programar cosas tontas xD y bueno... Aquí os dejo el código del programa; después pongo el problema:
Código:
El problema es que el scanf que hay después de "printf("¿Desea calcular otra regla de tres? (s/n): ");" que debería de preguntar para cambiar el contenido de la variable char confirmar, no aparece. Es decir, en la ejecución del programa no pide el dato, se salta el scanf, y como "seguir" sigue siendo 's', es un bucle infinito.#include <string.h> #include <stdio.h> #include <math.h> int main () { char seguir = 's'; char confirmar; float a, b, c, d; char numero; while (seguir=='s') { printf("Bienvenido a Nexus Logic Calc versión 0.1. De momento solo calcula reglas de tres con números enteros. \n\n"); printf("La lógica será la siguiente: \n a ---------- b \n c ---------- d \nO lo que es lo mismo: A es a B como C es a D\n"); printf("¿Qué número desconoce?\n\nNúmero (letra minúscula): "); scanf("%c", &numero); fflush(stdin); switch (numero) { case 'a': /*Principio de caso A*/ printf("Introduzca b: "); scanf("%f", &b); fflush(stdin); printf("Introduzca c: "); scanf("%f", &c); fflush(stdin); printf("Introduzca d: "); scanf("%f", &d); fflush(stdin); a = b * c / d; printf("El resultado de a es: %f \n", a); break; /*Fin del caso A*/ case 'b': /*Principio de caso B*/ printf("Introduzca a: "); scanf("%f", &a); fflush(stdin); printf("Introduzca c: "); scanf("%f", &c); fflush(stdin); printf("Introduzca d: "); scanf("%f", &d); fflush(stdin); b = a * d / c; printf("El resultado de b es: %f \n", b); break; /*Fin del caso B*/ case 'c': /*Principio de caso C*/ printf("Introduzca a: "); scanf("%f", &a); fflush(stdin); printf("Introduzca b: "); scanf("%f", &b); fflush(stdin); printf("Introduzca d: "); scanf("%f", &d); fflush(stdin); c = a * d / b; printf("El resultado de c es: %f \n", c); break; /*Fin del caso C*/ case 'd': /*Principio de caso D*/ printf("Introduzca a: "); scanf("%f", &a); fflush(stdin); printf("Introduzca b: "); scanf("%f", &b); fflush(stdin); printf("Introduzca c: "); scanf("%f", &c); fflush(stdin); d = b * c / a; printf("El resultado de d es: %f \n", d); break; /*Fin del caso D*/ } fflush(stdin); printf("¿Desea calcular otra regla de tres? (s/n): "); scanf("%c", &confirmar); if (confirmar == 's') { seguir = 's'; } if (seguir=='s') { printf("\n\n ==================== \n\n"); } else { printf("Hasta luego \n"); } } return 0; }
A ver si veis algo raro en el programa o algo :S
Muchas gracias por adelantado ^^
Saludos.