ページ 11

ポインタについて

Posted: 2019年3月28日(木) 00:41
by 情弱
ポインタについて学びたく思い、二次方程式をとく関数をポインタで作ってみたのですが、No matching function for call to 'equation'となり、Build Failedとなります。調べたところポインタの渡し方が悪いとありましたが、具体的にどう直せば良いのでしょうか。どうしたらいいですか?

コード:

 

#include <iostream>
#include <cmath>
using namespace std;

bool equation(double a, double b, double c, double *x1, double *x2)
{
    double D;
    D = b * b - 4 * a * c;
    if (D < 0)
        return false;
    else
    {
        *x1 = (-b + sqrt(D) / (2 * a));
        *x2 = (-b - sqrt(D) / (2 * a));
        return true;
    }
}


int main()
{
    double a, b, c, *x1, *x2;
    cin >> a >> b >> c;
    
    if (equation(a, b, c, &x1, &x2) == true)
    {
        cout << x1 << x2;
    }
    else
    {
        cout << endl;
    }
    return 0;
}


Re: ポインタについて

Posted: 2019年3月28日(木) 01:24
by box

コード:

   double a, b, c, *x1, *x2;
x1, x2をdouble型へのポインターとしていることです。
普通にdoubleにしてください。

Re: ポインタについて

Posted: 2019年3月28日(木) 11:38
by 情弱
解決しました。ありがとうございました。

Re: ポインタについて

Posted: 2019年3月28日(木) 11:38
by 情弱
解決しました。ありがとうございました。

Re: ポインタについて

Posted: 2019年3月28日(木) 15:29
by かずま
本当に解決ですか?

 *x1 = (-b + sqrt(D) / (2 * a));
ではなく、
 *x1 = (-b + sqrt(D)) / (2 * a);
ではないのですか?

cout << x1 << x2; だと数字が繋がってしまいますよ。

解決したコードを貼り付けてください。