自分が作ったプログラムはこれなんですが
#include <stdio.h>
#include <math.h>
double mycbrt( double x )
{
double a1=1;
double ai;
}
int main(void)
{
int b;
int e;
double r,z;
printf("Input>>");
scanf("%d",&b);
printf("x\tr\tr*r*r\n");
for(e=1; e<=b;e++)
{
printf("%f\t%f\t%f\n",(double)e, r=sqrt(e), r=mysqrt(e));
}
}
出力結果を
x r r*r*r
1.0 1.0000000000 1.0000000000
2.0 1.2599210499 2.0000000000
3.0 1.4422495703 3.0000000000
4.0 1.5874010520 4.0000000000
5.0 1.7099759467 5.0000000000
6.0 1.8171205928 6.0000000000
7.0 1.9129311828 7.0000000000
8.0 2.0000000000 8.0000000000
9.0 2.0800838231 9.0000000000
10.0 2.1544346900 10.0000000000
にしなければならないのですが
自分の作ったプログラムはこうにはなりませんでした
このプログラムをどのように変更したらよいですか?
3 乗根を計算する関数 double mycbrt(double x) を作成せよ. 数列には,
a1=1
ai+1=(2ai+x/ai2)/3
を用いることが課題のルールだそうです
三乗根の関数についての質問
Re: 三乗根の関数についての質問
どのような結果が出るのですか?はちお さんが書きました:自分の作ったプログラムはこうにはなりませんでした
コードを見た限りでは実行すらできないと思います。
添付されているコードには、3 乗根を計算しているような部分は見当たらないのですが
どの部分で3 乗根を計算しているつもりなのですか?
また、mysqrtという関数の内容も分かりません。
Re: 三乗根の関数についての質問
main で呼び出す関数名が mysqrt になっています。
このままではリンクができずに実行プログラムが作成されないはずです。
mysqrt は mycbrtのタイプミスである、くわえて
mycbrtの中身は自分のノウハウだから伏せたんだと好意的に解釈して
出力結果を
x r r*r*r
1.0 1.0000000000 1.0000000000
2.0 1.2599210499 2.0000000000
3.0 1.4422495703 3.0000000000
・・・
にする為には
printf("%f\t%f\t%f\n",(double)e, r=sqrt(e), r=mysqrt(e));
ではなくて
r=mycbrt(e);printf("%.1f\t%f\t%f\n",(double)e, r, r*r*r);
ですね。だから結果が思った通りにならなかったのでしょう。きっとそうです
このままではリンクができずに実行プログラムが作成されないはずです。
mysqrt は mycbrtのタイプミスである、くわえて
mycbrtの中身は自分のノウハウだから伏せたんだと好意的に解釈して
出力結果を
x r r*r*r
1.0 1.0000000000 1.0000000000
2.0 1.2599210499 2.0000000000
3.0 1.4422495703 3.0000000000
・・・
にする為には
printf("%f\t%f\t%f\n",(double)e, r=sqrt(e), r=mysqrt(e));
ではなくて
r=mycbrt(e);printf("%.1f\t%f\t%f\n",(double)e, r, r*r*r);
ですね。だから結果が思った通りにならなかったのでしょう。きっとそうです
Re: 三乗根の関数についての質問
mycbrtって、もしかして先生が用意してくれたテンプレートじゃないですか?
意図的に隠しているわけではなくこのままのコードで実行しようとしているのなら、mycbrtの存在理由が不明です。
引数使ってないし、宣言して投げっぱなしだし、doubleをreturnしないしw
main処理だけの問題ではなく、mycbrtも自分で実装しなければなりません。
あと、課題のルールはルールというよりほぼ答えですw
そんなに難しく考える必要はないと思います。
mainは入力と印刷だけですから、処理は全てmycbrtです。
とりあえずmycbrtに何をさせたらいいのかを考えてみてください。
意図的に隠しているわけではなくこのままのコードで実行しようとしているのなら、mycbrtの存在理由が不明です。
引数使ってないし、宣言して投げっぱなしだし、doubleをreturnしないしw
main処理だけの問題ではなく、mycbrtも自分で実装しなければなりません。
あと、課題のルールはルールというよりほぼ答えですw
そんなに難しく考える必要はないと思います。
mainは入力と印刷だけですから、処理は全てmycbrtです。
とりあえずmycbrtに何をさせたらいいのかを考えてみてください。