/*I need to use the result from the (delta) function inside the (sol_ec_II) function for a school assignment.*/
#include <iostream>
#include <ctgmath>
using namespace std;
double delta(double a, double b, double c) {
return (b * b) - (4 * a * c);/* so I need to take this value [(b * b) - (4 * a * c)]
and use it in sol_ec_II in the places where I wrote "delta". */
}
void sol_ec_II(double a, double b, double c) {
if (delta < 0) {//here
cout << endl << "Polinomul NU are solutii.";
}
else {
double x1 = -1 * b - sqrt(delta);//here
double x2 = -1 * b sqrt(delta);//here
}
}
// 我還需要在 (sol_ec_II) 中使用 (delta) 函式,以便它們使用相同的 a、b、c 值,如下所示:
void sol_ec_II(double a, double b, double c) {
delta(a, b, c);
if (delta < 0) {
cout << endl << "Polinomul NU are solutii.";
}
else {
double x1 = -1 * b - sqrt(delta);
double x2 = -1 * b sqrt(delta);
}
}
//所以我不明白如何獲取 delta(a, b, c) 產生的值并在 if 陳述句和 sqrt 中使用它。
uj5u.com熱心網友回復:
結果在您呼叫它時從函式呼叫中“出來”。看,你已經知道如何sqrt運作了。sqrt是一個函式!你撰寫sqrt(something)并呼叫函式sqrt,它呼叫sqrt帶有引數的函式,something然后sqrt在你撰寫的地方使用來自的回傳值sqrt(something)。例如1 sqrt(4)計算 3。
同樣,來自的回傳值delta在您撰寫的地方使用delta(a, b, c)。如果你想呼叫 delta 然后呼叫 sqrt(即計算 delta 的平方根)你寫sqrt(delta(a, b, c)).
顯然,僅僅計算一個數字是沒有用的。您可能想對數字做一些事情,例如將其保存在變數中或列印出來。例子:
cout << "the square root of the delta is " << sqrt(delta(a,b,c)) << endl;
cout << "the delta plus one is " << (delta(a,b,c) 1) << endl;
double the_delta = delta(a,b,c);
cout << "the delta is " << the_delta << " and the square root of the delta is " << sqrt(the_delta) << endl;
if (delta(a,b,c) < 0)
cout << "the delta is negative" << endl;
else
cout << "the delta isn't negative" << endl;
注意:計算機每次運行時delta(a,b,c)都會呼叫該delta函式。它不記得上次的計算。您可以看到這一點,因為如果您將 cout 指令放入 delta 函式中,則每次計算機運行時都會列印它們delta(a,b,c)。
當然,我不會為您的程式提供解決方案。我希望這可以幫助您了解函式的作業原理。
uj5u.com熱心網友回復:
在這里,您應該將引數傳遞給 deleta 函式以執行它:
void sol_ec_II(double a, double b, double c) {
if (delta(a,b,c) < 0) {//here
cout << endl << "Polinomul NU are solutii.";
}
else {
double x1 = -1 * b - sqrt(delta);//here
double x2 = -1 * b sqrt(delta);//here
}
}
或者您可以將結果保存在一個名為 result 的新變數中,然后使用它,如下所示:
void sol_ec_II(double a, double b, double c) {
double result = delta(a,b,c);
if (result < 0) {//here
cout << endl << "Polinomul NU are solutii.";
}
else {
double x1 = -1 * b - sqrt(delta);//here
double x2 = -1 * b sqrt(delta);//here
}
}
第二個函式也一樣,總是使用括號來執行函式,并在它們之間傳遞函式期望的引數。
uj5u.com熱心網友回復:
要重用從多次呼叫函式中獲得的值,請使用變數:
double delta(double,double,double) { return 1.2; /*ignore this for now*/ }
void sol_ec_II(double a, double b, double c) {
const auto kDelta = delta(a, b, c);
if (kDelta < 0.0) {
// do stuff
} else {
const auto kRootD = sqrt(kDelta); // same idea
const auto x1 = -b - kRootD;
const auto x2 = -b kRootD;
// use the variables
}
}
我auto習慣用,你不需要,double很好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358031.html
上一篇:某處有內公式嗎?
