ポインタについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
情弱

ポインタについて

#1

投稿記事 by 情弱 » 5年前

ポインタについて学びたく思い、二次方程式をとく関数をポインタで作ってみたのですが、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;
}


box
記事: 2002
登録日時: 13年前

Re: ポインタについて

#2

投稿記事 by box » 5年前

コード:

   double a, b, c, *x1, *x2;
x1, x2をdouble型へのポインターとしていることです。
普通にdoubleにしてください。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

情弱

Re: ポインタについて

#3

投稿記事 by 情弱 » 5年前

解決しました。ありがとうございました。

情弱

Re: ポインタについて

#4

投稿記事 by 情弱 » 5年前

解決しました。ありがとうございました。

かずま

Re: ポインタについて

#5

投稿記事 by かずま » 5年前

本当に解決ですか?

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

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

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

返信

“C言語何でも質問掲示板” へ戻る