プロが教えるわが家の防犯対策術!

今、C++言語を勉強中です。
そこで数表を作るみたいな例題があるのですがどうしても思ったとおりになってくれません。
いろんなことを考えましたが自分の力ではどうにもなりません・・・・。
そこで間違いがあれば指摘していただけたらと思い質問させていただきます。
以下がそのプログラム?です。よろしくお願いします。

#include<iostream.h>
#include<math.h>
#include<iomanip.h>
main()
{
int n ; double n3 , n5;

cout << setw(5) << "n"
<< setw(10) << "1/n"
<< setw(10) << "n^1/3" << "\n";
cout << setiosflags(ios::fixed);
for(n=1 ; n<=25 ; ++n)
{
n3=1/n ; n5=pow(n,1/3) ;

cout << setw(5) << n
<< setw(10)
<< setprecision(5) << n3
<< setw(10)
<< setprecision(5) << n5 << "\n" ;
}
return 0 ;
}

A 回答 (2件)

整数型のせいで桁落ちしているとか。


n3、n5の計算式をdoubleでキャストしてみてはどうでしょう。
n5=pow((double)n,(double)1/3) ;
    • good
    • 0

doubleを使う場合はたとえ整数でもすべて小数点付きにしてください。



#include<iostream.h>
#include<math.h>
#include<iomanip.h>
main()
{
double n, n3 , n5;

cout << setw(5) << "n"
<< setw(10) << "1/n"
<< setw(10) << "n^1/3" << "\n";
cout << setiosflags(ios::fixed);
for(n=1.0 ; n<=25.0 ; ++n)
{
n3=1.0/n ; n5=pow(n,1.0/3.0) ;

cout << setw(5) << n
<< setw(10)
<< setprecision(5) << n3
<< setw(10)
<< setprecision(5) << n5 << "\n" ;
}
return 0 ;
}

結果はこんな風です。

n 1/n n^1/3
1.000000 1.00000 1.00000
2.00000 0.50000 1.25992
3.00000 0.33333 1.44225
4.00000 0.25000 1.58740
5.00000 0.20000 1.70998
6.00000 0.16667 1.81712
7.00000 0.14286 1.91293
8.00000 0.12500 2.00000
9.00000 0.11111 2.08008
10.00000 0.10000 2.15443
11.00000 0.09091 2.22398
12.00000 0.08333 2.28943
13.00000 0.07692 2.35133
14.00000 0.07143 2.41014
15.00000 0.06667 2.46621
16.00000 0.06250 2.51984
17.00000 0.05882 2.57128
18.00000 0.05556 2.62074
19.00000 0.05263 2.66840
20.00000 0.05000 2.71442
21.00000 0.04762 2.75892
22.00000 0.04545 2.80204
23.00000 0.04348 2.84387
24.00000 0.04167 2.88450
25.00000 0.04000 2.92402
Press any key to continue
    • good
    • 0
この回答へのお礼

お二方にまとめてお礼申し上げます。
どちらの方法でもうまくいきました。
これからもがんばっていきたいと思います。
ポイントは回答してくださった順番につけたいと思います。
本当にありがとうございました。

お礼日時:2003/04/28 08:20

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