Изменение функции Void на функцию Return Value - PullRequest
0 голосов
/ 19 октября 2019

Для текущей работающей программы, использующей функцию void: измените программу так, чтобы функция void не выводила значение переменной, а отправляла основной функции.

void trackVar(double& x, double y);

int main()
{
    double one, two;

    cout << fixed << showpoint << setprecision(2);
    cout << "Enter two numbers: ";
    cin >> one >> two;
    cout << endl;

    trackVar(one, two);
    cout << "one = " << one << ", two = " << two << endl;

    trackVar(two, one);
    cout << "one = " << one << ", two = " << two << endl;

    return 0;
}
void trackVar(double& x, double y)
{
    double z;
    z = floor(x) + ceil(y);
    x = x + z;
    y = y - z;

    cout << "z = " << z << ", ";
}

Я могу получить выводперечисляет значения для одного и двух правильно, но не знает, как получить вывод для 'z' как часть основной функции.

Конечный результат (для заинтересованных):

double trackVar(double& x, double y); ///function prototype (switched to double instead of void)

int main()
{
    double one, two, z;

    cout << fixed << showpoint << setprecision(2);
    cout << "Enter two numbers: ";
    cin >> one >> two;
    cout << endl;

z = trackVar(one,two);
    cout <<"z= "<<z<<" "<<"one= "<<
    one<<"two= "<<two<< endl;
z = trackVar(two,one);
    cout <<"z= "<<z<<" "<<"one= "<<
    one<<"two= "<<two<< endl;

    return 0;
}

double trackVar(double& x, double y)
{
    double z;
    z = floor(x) + ceil(y);
    x = x + z;
    y = y - z;

    return z;
}

1 Ответ

1 голос
/ 19 октября 2019

После проверки я обновляю свой пост.

попробуйте это:

void trackVar(double& x, double& y)
{
    double z;
    z = floor(x) + ceil(y);
    x = x + z;
    y = y - z;
}

Итак, нормальная функция trackVar(double x, double y) отправит копию x и y в функцию, поэтомудаже если вы меняете их там, ничего не меняется. Но если вы используете ссылку, trackVar(double& x, double& y), чтобы изменить x и y, это действительно изменит значение, поэтому будьте осторожны, используя ссылку.

для простого примера:

void trackVar(double& a, double& b)
{
     a = 99;
     b = 66;
}

int main()
{
    double a = 1;
    double b = 2;

    trackVar(a, b);
    std::cout << "New a: "<< a << std::endl;
    std::cout << "New b: " << b << std::endl;
    return 0;  
}

вывод: New a: 99 вывод: New b: 66

...