Вылетает не ошибка, а "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;
}

Объяснение кода листинга программы

  1. Переменные a, b, x и exec объявляются в начале функции main.
  2. Затем программа запрашивает у пользователя ввод значений переменных a и b с помощью функции scanf.
  3. Далее происходит проверка на то, что a меньше b.
  4. Если это условие выполняется, то проверяется, что b не равно нулю.
  5. Если это условие также выполняется, то переменная x вычисляется как (a - 5) / b.
  6. Если условие в пункте 3 не выполняется, то проверяется, что b меньше a.
  7. Если это условие выполняется, то проверяется, что a не равно нулю.
  8. Если это условие также выполняется, то переменная x вычисляется как (52 * b / a) + b.
  9. Если ни одно из условий в пунктах 3-8 не выполняется, то переменная x присваивается значение -125.
  10. Затем программа проверяет значение переменной exec.
  11. Если exec больше или равен 1, то значение переменной x выводится на экран с помощью функции printf.
  12. Если exec меньше 1, то программа выводит сообщение об ошибке с помощью функции printf.
  13. В конце программы вызывается функция system(pause), чтобы программа не закрылась сразу после вывода на экран.
  14. В конце программы возвращается 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5
Похожие ответы