#include void limpiar_buffer() { int c; while ((c = getchar()) != '\n' && c != EOF); // Limpia hasta el final de línea } int main(int argc, char *argv[]) { double v, sum = 0.0; char op; int salir = 0; while(!salir) { printf("Ingrese operación (+, -, *, /) o cualquier otro carácter para salir: "); if(scanf(" %c", &op) != 1) { // El espacio antes de %c ignora whitespaces limpiar_buffer(); break; } printf("op %c\n", op); switch(op) { case '+': printf("Ingrese valores (letra para terminar):\n"); while(fscanf(stdin, "%lf", &v) == 1) { printf("v: %f \t%.2f\n", v, sum += v); } limpiar_buffer(); break; case '-': printf("Ingrese valores (letra para terminar):\n"); while(fscanf(stdin, "%lf", &v) == 1) { printf("v: %f \t%.2f\n", v, sum -= v); } limpiar_buffer(); break; case '*': printf("Ingrese valores (letra para terminar):\n"); while(fscanf(stdin, "%lf", &v) == 1) { printf("v: %f \t%.2f\n", v, sum *= v); } limpiar_buffer(); break; case '/': printf("Ingrese valores (letra para terminar):\n"); while(fscanf(stdin, "%lf", &v) == 1) { if(v == 0.0) { fprintf(stderr, "Error: división por cero\n"); continue; } printf("v: %f \t%.2f\n", v, sum /= v); } limpiar_buffer(); break; default: salir = 1; } } printf("Resultado final: %.2f\n", sum); fprintf(stderr, "Programa terminado correctamente\n"); return 0; }