電子書籍の厳選無料作品が豊富!

方程式2.0*pow(10,-15)*pow(38.6,x)-2.73-0.909x=0の解xを二分法により求め、それを”atai=××”と表示させるプログラムを書こうと思っているのですが、エラーがでてしまい、さらにどこを直していいかわかりません。
詳しい方がおられましたら、アドバイスをいただけたらと思います。よろしくお願いいたします。

<エラー内容>
「コンパイルしています...
tom.cpp
.\tom.cpp(34) : error C2668: 'pow' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(575): 'long double pow(long double,int)' の可能性があります。
C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(527): または 'float pow(float,int)'
C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(489): または 'double pow(double,int)'
引数リスト '(int, int)' を一致させようとしているとき
.\tom.cpp(34) : error C2059: 構文エラー : 'サフィックスが無効です。'
.\tom.cpp(34) : error C2146: 構文エラー : ';' が、識別子 'x' の前に必要です。
ビルドログは "file://c:\Documents and Settings\satoutakaaki\デスクトップ\file\tom\tom\Debug\BuildLog.htm" に保存されました。
tom - エラー 3、警告 0」

<プログラム>
#include "stdafx.h"
#include <stdio.h>
#include <math.h>

double fx(double x);
int main (void){
double x1=-1000;
double x2=1000;
double xn;
double y;
int i=0;
for(i=1;i<100;i++)
{
xn=0.5*(x1+x2);
y=fx(xn);
if(y>0)
{x1=x1/2+x2/2;}
if(y<0)
{x2=x1/2+x2/2;}
i=i+1;
}
printf("atai=%f",xn);
return 0;
}

double fx(double x)
{

double z;

z=2.0*pow(10,-15)*pow(38.6,x)-2.73-0.909x;
return z;
}

A 回答 (3件)

http://msdn.microsoft.com/ja-jp/library/dt5dakze … より:
--
Visual C++ 2005 では、ISO 標準にさらに準拠するために大きく変更されています。pow(int, int) のオーバーロードは、使用できなくなりました。このオーバーロードを使用している場合、コンパイラは C2668 を発生することがあります。この問題を回避するには、最初のパラメータを double、float、または long double にキャストします。
--
ってことなので、最初のpow(10,-15)がエラーの原因です。
回避というか解消方法は既に#1/#2で出されている通りです。
    • good
    • 0
この回答へのお礼

丁寧に解説いただき、ありがとうございます!

お礼日時:2008/11/16 22:04

ていうか、z そのものが不要で、fx() の本体は



return 2.0 * pow(10.0, -15.0) * pow(38.6, x) - 2.73 - 0.909 * x;

で十分かと。
    • good
    • 0
この回答へのお礼

うまく実行できました。
ありがとうございます。

お礼日時:2008/10/21 23:00

> z=2.0*pow(10,-15)*pow(38.6,x)-2.73-0.909x;



z = 2.0 * pow(10.0, -15.0) * pow(38.6, x) - 2.73 - 0.909 * x;

ではないでしょうか。
    • good
    • 0
この回答へのお礼

できました!ありがとうございます。パソコンが壊れてつながらなかたので回答が遅れてしまって申し訳ないです。

お礼日時:2008/11/16 22:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!