アプリ版:「スタンプのみでお礼する」機能のリリースについて

これは数学での絶対値同様、例えば 2 -5 と入力したら7と出て、2 5と入力したら3と出るものですか?

A 回答 (8件)

★アドバイス


>-1*subという書き方はしませんか?
 ↑
 絶対値を表示する計算式は間違ってはいません。
 でも最後の printf 行の『絶対値』を表示するときの sub 変数は絶対値に
 なっていないのでこの質問的には間違いです。
>エラーがでてしまうのですが、…
 ↑
 エラーが出ますか?
 補足のソースには全角空白文字が混じっています。
 エラーはこのせいでしょう。
・ここではサンプル・ソースのインデント部を全角空白の文字で書き込みます。
 だからコピー&ペーストするときにはエディッタなどの置換命令で半角空白の文字に
 一括変換して下さい。

本題:
・『-1*sub』は絶対値の計算式としてはあっていますが、sub 変数に代入されていません。
 だから sub 変数に『-1*sub』を代入すれば良いです。
 つまり
 sub = (-1 * sub);
 を if-else のブロックで記述します。
 ゼロ以上の場合は特に記述する必要はないですが分かりやすく
 sub = (+1 * sub);
 などを対応して書いておくのも良いですね。
 この辺は自由ですが…。
・ちなみに if-else のブロック内では printf の記述はなくて良いのではないでしょか?
 最後の1行の printf で絶対値の sub 変数を書き出しているので。
・以上。出来たらソースを貼り付けて下さい。見ます。

この回答への補足

sub=(1*sub); 
sub=(-1-*sub);

#include<stdio.h>
int main( void )
{int a, b, sub;
scanf( "%d", &a );
scanf( "%d", &b );
sub = a - b;
sub=(1*sub); 
sub=(-1-*sub);
if (sub >=0 )
{printf("%d",sub); 
}else{printf("%d",-1*sub);
}printf( "絶対値=%d\n", sub );
return 0;} のどこに入れますか?
if elseの中にそれぞれ入れてもエラーがでます。
全て半角にしました。

補足日時:2007/10/07 15:10
    • good
    • 1
この回答へのお礼

ありがとうございます。 質問から時間が経っていることもありますが、ピンポイントでわかったので、とても前進できました。

お礼日時:2007/11/06 13:33

だんだんと質問の仕方が丸投げっぽくなってきています。


気を付けないとルール違反で削除されてしまいますよ?

また、プログラムを貼り付ける時は、改行とインデントを適度に入れるようにした方が見易くなります。

急に横からすみません。
少し気になったものですから…。

最後に、実際に実行しているコードがどうかは分かりませんが、少なくとも貼り付けているコードには全角スペースが混じっています。
    • good
    • 0
この回答へのお礼

ありがとうございます。 質問の内容でどれくらい理解しているかがある程度は分かりますね。

お礼日時:2007/11/06 13:30

★アドバイス


・まずは質問のタイトルから入ります。
>整数を二つ読み込み、それらの差の絶対値を書き出すプログラム
 ↑
 これはそのまま
>これは数学での絶対値同様、例えば
>2 -5 と入力したら7と出て、
>2 5と入力したら3と出るものですか?
 ↑
 この考えていいと思います。
 『差』を求めたらその値に対して数学での絶対値を書き出せば良いのです。
・プログラミングの流れを書きますと
 (1)scanf() 関数などで2つの整数を読み込む
 (2)読み込んだ整数の『差』を求める
 (3)『差』の絶対値を計算する
 (4)絶対値を printf などで書き出す
 これだけです。
 ここで重要なのはきっと『差』の値が負か、正かを分岐して負なら -1 を掛けるか、
 abs() という絶対値を計算してくれる関数を使います。abs() 関数を使うかどうかは
 個人の自由です。あるは課題などで使う、使わないの指示通りにして下さい。
・下にサンプルを載せときます。

サンプル:
int main( void )
{
 int a, b, sub;
 
 // 2つの整数を読み込む
 scanf( "%d", &a );
 scanf( "%d", &b );
 // 差を求める
 sub = a - b;
 // 差の絶対値
 if ( 条件式 ){
  …記述…
 }
 else{
  …記述…
 }
 // 結果を書き出す
 printf( "絶対値=%d\n", sub );
 return 0;
}
以上。『条件式』や『…記述…』は埋めてみましょう。

この回答への補足

#include<stdio.h>
int main( void )
{int a, b, sub;
scanf( "%d", &a );
scanf( "%d", &b );
sub = a - b;
if (sub >=0 ){
printf("%d",sub); }
else{printf("%d",-1*sub);}
printf( "絶対値=%d\n", sub );
return 0;}
でエラーがでてしまうのですが、-1*subという書き方はしませんか?

補足日時:2007/10/07 09:41
    • good
    • 0
この回答へのお礼

absはてがるにつかうかは、そこでの判断ですね。この程度の問題なら、どちらでもできないといけませんね。

お礼日時:2007/11/06 13:27

#2です。


プログラムというのは、#1の方のやり方と私が#2で答えたやり方が違うように、考え方によって何通りでもできるものです。(この『考え方』がアルゴリズムです。)
今回、課題などで『整数を2つ読み込み、それらの差の絶対値を書き出すプログラムを作りなさい』と言われたのなら、それは質問でおっしゃっているように数学での絶対値を出力するものを作成すれば良いと思います!
    • good
    • 0
この回答へのお礼

ありがとうございます。 経験があれば、そういった迷いはなくなっていくんでしょね。

お礼日時:2007/11/06 13:24

>2 -5 と入力したら7と出て、2 5と入力したら3と出るものですか?


確かに少し曖昧な問題ですが、私的には
2つ整数の差と言っているので計算としては
2 - (-5) = 7
2 - 5 = -3
つまりこれらの絶対値である、7 と 3で良いと思います。
#課題なら出した人にどっちか聞いてみた方が早いかと。

>そうすると、答えが負にならないようにするのですか?
絶対値とは0からどれだけ離れた数値を表すものなので、
符号はつきません。(ここでいう符号とは+-を意味します)
・+1は0から 1 はなれた数値である
・-1は0から 1 はなれた数値である
    • good
    • 0
この回答へのお礼

 ありがとございます。 試験などでも問題文が厳密にかかれていないので、回答例などを参考にしたいと思います。

お礼日時:2007/11/06 13:18

国語が苦手で良く分からないのですが、そーゆープログラムを作れと言われたら、親切にどっちも出力するプログラムを作ると思います。



つまり、2と-5を入力したら出力は 7と3
    • good
    • 0
この回答へのお礼

ありがといございます。 大概はどちらにも答えられないとC言語の力が不十分というですね。

お礼日時:2007/11/06 13:13

そのプログラムによると思います。


入力したaとb2つの数字を読み込んで、(a-b)が負なら(a-b)に(-1)かけたものを表示させるなどと言った内容のプログラムを書けばそのように出ます!

この回答への補足

やり方が複数あるということですか?

補足日時:2007/10/05 12:08
    • good
    • 0
この回答へのお礼

ありがとうございます。   絶対値は負の数に-をかけることが直ぐに浮かぶのが理想なのですね。

お礼日時:2007/11/06 13:15

入力した二つの大小を比較して、大きいほうから小さいほうを引けば差が求まる。


イコール(差がゼロ)の時のことも忘れずに。

この回答への補足

そうすると、答えが負にならないようにするのですか?

補足日時:2007/10/05 12:09
    • good
    • 0
この回答へのお礼

ありがとうございます。 他の問題で、イコールになる部分を忘れたら、原点の対象になったので気をつけたいと思います。

お礼日時:2007/11/06 13:23

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