#include
#include
void clearInputBuffer() {
while (getchar() != '\n');
}
int isValidDouble(double value) {
return value > -1e100 && value < 1e100;
}
double getInput(const char* prompt) {
double value;
int result;
while (1) {
printf("%s", prompt);
result = scanf("%lf", &value);
if (result == 1 && isValidDouble(value)) {
clearInputBuffer();
return value;
} else {
printf("Ошибка: Неверный ввод. Пожалуйста, введите число в диапазоне [-1e100, 1e100].\n");
clearInputBuffer();
}
}
}
double calculateFunction(double x, double t, double z) {
return (3 * t / 12 + 6.7e4 * z) / (x + t - z);
}
int main() {
double x, t, z, f;
char choice;
do {
printf("=== Ввод значений ===\n");
x = getInput("Введите значение x (например, 25.0): ");
t = getInput("Введите значение t (например, 2.4e8): ");
z = getInput("Введите значение z (например, -1.6e-5): ");
if (x + t - z == 0) {
printf("Ошибка: Деление на ноль! Проверьте введенные значения.\n");
return 1;
}
f = calculateFunction(x, t, z);
printf("\n=== Результат вычисления ===\n");
printf("f = %10.3e\n", f);
printf("\n=== Введенные значения ===\n");
printf("x = %.2f\n", x);
printf("t = %.2e\n", t);
printf("z = %.2e\n", z);
printf("\nХотите ли вы выполнить еще одно вычисление? (y/n): ");
choice = getchar();
clearInputBuffer();
} while (choice == 'y' || choice == 'Y');
printf("Спасибо за использование программы!\n");
return 0;
}