Buenas a todos.
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:
#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;
}
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.
A ver si veis algo raro en el programa o algo :S
Muchas gracias por adelantado ^^
Saludos.