ページ 1 / 1
関数が機能していない
Posted: 2020年10月25日(日) 23:00
by からし
コード:
#include <stdio.h>
int beki ( int num, double input, int jou, double ans );
int main(void)
{
double real;
double result;
int power;
int i;
printf( "実数値=> " );
scanf( "%lf", &real );
printf( "何乗しますか?=> " );
scanf( "%d", &power );
beki( i, real, power, result );
printf( "%fの%d乗は、%fです。\n", real, power, result );
return 0;
}
int beki( int num, double input, int jou, double ans )
{
ans = 1.0f;
for( num = 0; num < jou; num++ ){
ans *= input;
}
return ans;
}
実数値、乗数を指定して、その結果を出力するコードですが、int beki関数で計算した結果をmainのresultに返したいのですが上手くいきません。
何が足りない、何が間違っているのでしょうか?
Re: 関数が機能していない
Posted: 2020年10月25日(日) 23:56
by みけCAT
beki関数から返した結果をmain関数側で全く使わず、投げ捨てているのが間違っています。
また、beki関数の引数numおよびansの値を使わずにローカル変数のように使っていること、
およびせっかくdoubleで計算した結果をintで返しているのは不自然に思えます。
コード:
#include <stdio.h>
/* 計算結果をdoubleにし、引数numとansを削除する */
double beki ( double input, int jou );
int main(void)
{
double real;
double result;
int power;
int i;
printf( "実数値=> " );
scanf( "%lf", &real );
printf( "何乗しますか?=> " );
scanf( "%d", &power );
/* 変更に合わせて引数を削除し、返された結果を受け取る */
result = beki( real, power );
printf( "%fの%d乗は、%fです。\n", real, power, result );
return 0;
}
/* 計算結果をdoubleにし、引数numとansを削除する */
double beki( double input, int jou )
{
/* 削除した引数のかわりにローカル変数を追加する */
int num;
double ans;
ans = 1.0f;
for( num = 0; num < jou; num++ ){
ans *= input;
}
return ans;
}
Re: 関数が機能していない
Posted: 2020年10月29日(木) 00:34
by box
beki()
の設計方針は?
つまり、
何をもらって(あるいは何ももらわず)
どんな処理をして
何を返すか(あるいは何も返さないか)
をきちんと考えてから
beki()
のコードを書いてますか?ってことです。