Вылетает не ошибка, а "x being used without being initializated" - C (СИ)
Формулировка задачи:
Собственно, описание ошибки в заголовке.
Прога высчитывает значение выражений в зависимости от значения a.
При а=0, b=0, она должна выводить результат -125, но выводила ошибку. После редактирования кода значения 0; 0 стало принимать адекватно, но при вводе 0; -1 вместо вывода ошибки она стала крашиться "x being used without being initializated".
Кидаю начальный код, который адекватен с 0; -1, но не принимает 0; 0. Подскажите, где неточность?
#include <locale.h> #include <stdio.h> #include <math.h> int main() { float a, b, x; setlocale(LC_CTYPE, "rus"); printf("Введите a,b\n"); scanf("%f%f", &a, &b); if (a>b && a !=0) x = (52*b/a)+b; else if (a==0) { printf ("Внимание! На 0 делить нельзя!"); goto next; } if (a==b) x = -125; if (a<b && b !=0) x = (a-5)/b; else if (b==0) { printf ("Внимание! На 0 делить нельзя!"); goto next; } printf("X равен %.3f", x); next: getch(); return 0; }
Решение задачи: «Вылетает не ошибка, а "x being used without being initializated"»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main() { float a, b, x = 0.0; int exec = 1; printf("input a,b: "); scanf("%f%f", &a, &b); if (a < b) { if ((exec = (b != 0))) { x = (a - 5) / b; } } else if (b < a) { if ((exec = (a != 0))) { x = (52 * b / a) + b; } } else { x = -125; } if (exec) { printf("X = %.3f", x); } else { printf("Attention! Can not divide by 0!\n"); } system("pause"); return 0; }
Объяснение кода листинга программы
- Переменные a, b, x и exec объявляются в начале функции main.
- Затем программа запрашивает у пользователя ввод значений переменных a и b с помощью функции scanf.
- Далее происходит проверка на то, что a меньше b.
- Если это условие выполняется, то проверяется, что b не равно нулю.
- Если это условие также выполняется, то переменная x вычисляется как (a - 5) / b.
- Если условие в пункте 3 не выполняется, то проверяется, что b меньше a.
- Если это условие выполняется, то проверяется, что a не равно нулю.
- Если это условие также выполняется, то переменная x вычисляется как (52 * b / a) + b.
- Если ни одно из условий в пунктах 3-8 не выполняется, то переменная x присваивается значение -125.
- Затем программа проверяет значение переменной exec.
- Если exec больше или равен 1, то значение переменной x выводится на экран с помощью функции printf.
- Если exec меньше 1, то программа выводит сообщение об ошибке с помощью функции printf.
- В конце программы вызывается функция system(
pause
), чтобы программа не закрылась сразу после вывода на экран. - В конце программы возвращается 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д