Почему в 31 строке пишет что не определены индентификаторы

#include <iostream>
#include<math.h>
using namespace std;

float numbers(double x, double b, double c)
{
    cout<<"Input x = ";
    cin >> x;
    cout << "Input b = ";
    cin >> b;
    cout << " Input c = ";
    cin >> c;

    float y;
    y = ((2 * x - c) / sqrt(x - b)) + fabs(x - b);

    cout << "Answer is " << y;

    return y;   
}

int main()
{
    int result;
    
    do {
        
        result = numbers(x, b, c);

        cout << "x = " << x << endl;
        cout << "b = " << b << endl;
        cout << "c = " << c << endl;
        
        

    } while (result <= 0);
    
}

Ответы (1 шт):

Автор решения: Mikhailo

Потому что они не определены.

result = numbers(x, b, c);

Что такое здесь x, b, c? Чему они равны? Какой тип имеют?

Объявление

float numbers(double x, double b, double c)

действует только внутри функции, это аргументы функции. Вне ее эти x, b, c никакого смысла не имеют.

И еще... даже допустив, что это не так, переданные по значеню аргументы при выходе из функции не меняются, так что введенные в функции значения x никак не могут быть выведены в cout вне ее...

#include <iostream>
#include<math.h>
using namespace std;

double numbers(double &x, double &b, double &c)  /// <<< передача по ссылке!!!
{
    cout<<"Input x = ";
    cin >> x;
    cout << "Input b = ";
    cin >> b;
    cout << " Input c = ";
    cin >> c;

    double y;       /// Используйте везде один тип - или float или double
    y = ((2 * x - c) / sqrt(x - b)) + fabs(x - b);

    cout << "Answer is " << y;

    return y;   
}

int main()
{
    double result;        /// <<<  float/double, не int!!!
    
    do {

        double x, b, c;   /// Объявление переменных     

        result = numbers(x, b, c);

        cout << "x = " << x << endl;
        cout << "b = " << b << endl;
        cout << "c = " << c << endl;
        
        

    } while (result <= 0);
    
}
→ Ссылка