プロが教える店舗&オフィスのセキュリティ対策術

計算結果をポインタで表示させるにはどうしたらいいですか??
課題なのですが計算結果ポインタで示すという条件を満たさなかったため0点でした。。。

#include<stdio.h>


void cul(float x, float y, float *sum, float *sub, float *multi, float *div){

*sum=x+y;
*sub=x-y;
*multi=x*y;
*div=x/y;
}


int main(void){

float a,b;
float sum=0, sub=0, multi=0, div=0;


printf("Input a and b:"); scanf("%f %f",&a, &b);


cul(a,b,&sum, &sub, &multi, &div);


printf("%.6f + %.6f = %.6f\n",a,b,sum);
printf("%.6f - %.6f = %.6f\n",a,b,sub);
printf("%.6f * %.6f = %.6f\n",a,b,multi);
printf("%.6f / %.6f = %.6f\n",a,b,div);

return 0;

}

質問者からの補足コメント

  • ポインタ変数のみを使用して2つの実数の四則演算結果を出力する

      補足日時:2022/06/01 09:34

A 回答 (5件)

なんか、問題文がちょっと誤解を受けやすい文章になっている気がしますね。


ま、いいたいのは、「printfの変数リストをポインターで示せ」ってことなんでしょうね。
printfの表示指定は変えることができない。で、変数部分をポインターを使えってのであれば、

printf("%.6f + %.6f = %.6f\n",*(&a),*(&b),*(&sum));

って感じになるのかな?でも、この部分でポインタを使うと複雑になっちゃいますね。

あるいは、表示用の関数をもう1個作って、そっちにculと似た感じでポインタを渡して、表示させたらよかったのかも?
    • good
    • 0

sub の NULL チェックを忘れてるよ>#4.



以下は余談.

加算の結果 (和) が sum であるのに対し減算の結果 (差), 乗算の結果 (積), 除算の結果 (商と剰余) をそれぞれ difference, product, quotient および reminder と呼ぶ. 演算そのものは
・加算: addition (または summation だけどこれは「たくさんの合計」を含意することもある)
・減算: subtraction
・乗算: multiplication
・除算: division
だね.

そういえば「cul」ってなんだろう. 「演算」なら calculation だからふつうは cal だと思うんだ.
    • good
    • 0

>ポインタ変数のみを使用して2つの実数の四則演算結果を出力する


を真に受けて、No3の方のアドバイスに従い、mallocを使用して、
全ての変数をポインタ変数にして作成してみました。
これで、合格点がもらえるかどうかはわかりませんが、
全ての変数は、ポインタ変数のみで作成してあります。

#include<stdio.h>
#include<stdlib.h>

void cul(float x, float y, float *sum, float *sub, float *multi,
float *div)
{

*sum = x + y;
*sub = x - y;
*multi = x * y;
*div = x / y;
}


int main(void)
{

float *a, *b;
float *sum, *sub, *multi, *div;
a = malloc(sizeof(float));
b = malloc(sizeof(float));
sum = malloc(sizeof(float));
sub = malloc(sizeof(float));
multi = malloc(sizeof(float));
div = malloc(sizeof(float));
if (a==NULL || b==NULL || sum==NULL || multi==NULL || div==NULL){
printf("malloc error\n");
return 10;
}

printf("Input a and b:");
scanf("%f %f", a, b);


cul(*a, *b, sum, sub, multi, div);


printf("%.6f + %.6f = %.6f\n", *a, *b, *sum);
printf("%.6f - %.6f = %.6f\n", *a, *b, *sub);
printf("%.6f * %.6f = %.6f\n", *a, *b, *multi);
printf("%.6f / %.6f = %.6f\n", *a, *b, *div);

return 0;

}
    • good
    • 0

>ポインタ変数のみを使用して2つの実数の


>四則演算結果を出力するです

「ポインタ変数のみ」を真に受けるとデータは全部は
malloc しなさいってこと?

そんな馬鹿げたことはしないと思うので
演算用の関数の「引数」だけ全部ポインタ型にしろってことかな?

それもバカバカしいんだけど、演習としてはありかも。

多分質問に書かれていないことをたくさん聞き逃しているのでしょう。
    • good
    • 1
この回答へのお礼

malloc習ってないです!

お礼日時:2022/06/01 15:42

その課題の文章をそのまま書いてもらえませんか?



> 計算結果をポインタで表示させる
> 計算結果ポインタで示す

が何を言っているのかさっぱりわかりません。
    • good
    • 1
この回答へのお礼

ポインタ変数のみを使用して2つの実数の四則演算結果を出力する

です

お礼日時:2022/06/01 09:35

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