• ベストアンサー

初心者なのでご勘弁を!

馬鹿な質問かもしれませんが、C言語で|a+b|<=cを入力してコンパイルし、 実行しようとしてもエラーが出て実行できません。C言語では絶対値のプログラム は存在しないのでしょうか?もし存在するなら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • madman
  • ベストアンサー率24% (612/2465)
回答No.1

abs(a+b)で絶対値が取れます。

son_son3
質問者

お礼

回答ありがとうございました。おかげさまで無事解決しました。 今後ともよろしくお願いします。

その他の回答 (5)

  • jun_l
  • ベストアンサー率18% (4/22)
回答No.6

質問の内容とは関係ないのですが、 もうすこしタイトルのつけ方に気をつけたほうがいいと思います。 今回の質問ならば「絶対値を使用できません」など 質問の内容がわかりやすいものがいいと思います。 初心者というのは本文の最後にでもちょこっと書いておけばいいことですから。 偉そうなこと言ってすいません。

son_son3
質問者

お礼

偉そうなことだなんてとんでもないです。以後気を付けます。

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.5

もう回答の必要はないと思いますが、老婆心ながら。。。  NINJA104さんのおっしゃるように、絶対値程度のものなら、マクロを使った方が関数を使うよりも高速で手軽です。  ただ、   ABS(a++); などとしてしまうと、マクロの副作用で結果が不明(処理系によって結果が異なる)なので注意が必要です。  C++などならインライン関数があるので、こんな問題ないのですが。

son_son3
質問者

お礼

アドバイスどうもありがとうございました。以後参考にさせて頂きます。 今後ともよろしくお願いします。

  • NINJA104
  • ベストアンサー率43% (133/306)
回答No.4

絶対値を求める関数 ~abs系 を使用し、先述の方々の様に用いるのが正攻法?ですが、いちいち変数の型を気にしなければならないので、私の場合は以下の様なマクロ関数を定義して使っています。 #define ABS(c) (((c)<0)?-(c):(c)) 参考まで。

son_son3
質問者

お礼

アドバイスどうもありがとうございました。以後参考にさせて頂きます。 今後ともよろしくお願いします。

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

a+bの型によって、関数を使い分ける必要があります。 実数なら double fabs(double x);  math.h 整数なら long labs(long n);  stdlib.h int   abs(int n);   stdlib.h

son_son3
質問者

お礼

アドバイスどうもありがとうございました。以後参考にさせて頂きます。 今後ともよろしくお願いします。

  • ametsuchi
  • ベストアンサー率31% (81/257)
回答No.2

abs()は整数型なので、もし、a,b,cが実数値なら、 fabs() を使ってください。

son_son3
質問者

お礼

回答ありがとうございました。以後参考にさせて頂きます。 今後ともよろしくお願いします。

関連するQ&A

  • コンパイル時に a.out と入力するとエラーが出てしまいます。

    コンパイル時に a.out と入力するとエラーが出てしまいます。 テキストファイルを複数 (最大で255個) 書き込むC言語のプログラム「f.c」を作成しまして それらのファイルは全て cygwin/home という場所に保存されます。 ただ、ファイルの中身は多くの文字が並ぶので(最大 500列 × 70000行 程度) 全てのファイルを書き込むには時間がかかりすぎてしまいます。 a.out を使って プログラム内にある scanf("a=", &a); scanf("b=", &b); これらの変数 a,b を出力し 実行結果で書き込まれるファイルを データとして出力する方法が知りたいのですが (この方法をバッチ処理というのでしょうか?) $ cc f.c (← 実行結果の際のコンパイル) その次に a.out と入力するとエラーが起きます。 a.out の使い方や意味を調べてもいまいち理解し難く困っております。 さきほど言った scanf で値を決める a,b を プログラム内で決めるのではなく a.out a b と入力してデータを出力させるには どのようにすればよいのでしょうか? なぜエラーしてしまうのかも教えて頂けないでしょうか? 長々と質問してしまいすみません。 どうか ご回答 よろしくお願いします。

  • 初心者の質問

    「C言語を始めよう」 http://hp.vector.co.jp/authors/VA010286/#SOFTWARE というフリーソフトを使用してC言語の勉強を始めた者です。 質問 コンパイルして、実行すると 「c:\borland\bcc55\Bin\test2.exe 'test2.exe'は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識 されていません。」というエラーが出ます。 プログラムは、以前に書いてちゃんと動いていたもの(test.exe)をコピー貼り付けしたものなのにです。 test.exeはちゃんと動きます。 なぜなのでしょうか?

  • C言語でのファイルの作成について(超初心者です)

    C言語を独学で勉強しています。 のちのち、C++も使えるようにと思い、ソフトも購入し使っています。 本(C言語のみ)などを見てサンプルプログラムを入力して実行はできるのですが、 フォルダとファイルの関係が全くわかりません。 1つサンプルプログラムを作るごとにフォルダを作成して 実行を繰り返しているのですが、 本当にそうしないといけないのでしょうか? 例えば、2つ以上のファイルを使ったプログラムは どうしたらいいのでしょうか? 超初心者なので コンパイルした後にできるファイルの意味も よくわかりません。 うまく説明できないのですが、このあたりのファイルの流れと意味を わかりやすく教えてもらえませんか? また こうした方がいいというものがあれば教えてください。 よろしくお願いします。

  • C++のcin命令について

     私は、C++言語を勉強している初心者です。  ある日、C++言語では、   「cin >> a >> b >> c;」と書くと、プログラムを実行したときに、   「3 4 5」と入力すれば、変数aには 3 が、変数bには 4 が、変数cには 5 が代入されるということを知りました。  けど、今まで私がC言語を使う際に使っていた、   「scanf("%d,%d,%d",&a,&b,&c);」という文では、プログラムを実行したときに、   「3,4,5」と入力すれば、変数aには 3 が、変数bには 4 が、変数cには 5 が代入されるというように、3つの数字の間にカンマを入れて数を代入するというプログラムを作りたいのですが、どうやってもcin命令では再現できません。  超初心な質問ですが、わかる方がいらっしゃったら、やり方を教えてください。

  • 複数のCプログラムから1つを選択しコンパイルしたい

    1.c,2.c,3.cという3つのファイルがあったとして、 「どのファイルを実行しますか」と聞かれると2.cと入力すれば2.cがコンパイルされるようなプログラムを作りたいです。どんな言語でもかまいません。

  • セグメントエラー

    Cプログラムを実行した時に発生する、セグメントエラー は何が原因なのでしょうか? コンパイルはちゃんとととっているのに、 なぜエラーがでるのでしょうか? C言語の本を見たのですが、 のってません。 お願いします。

  • C言語の外部からの変数取得方法について

     現在C言語の勉強を始めました。C言語を使用してプログラムを作成しています。コマンドプロンプトで、プログラムを実行する際に、「a = 」というようにたずねて、aの数値を取得して、プログラムで計算できるようにしたいのですが、getsではうまくいきませんでした。 例としては以下のようにしたいのです。 【コマンドプロンプトにて】 a + b = a =  //5と入力 b = //3と入力 計算結果は8です。 どのようにしたらプログラム実行中に数値を取得できますか。

  • defineで範囲指定した文字配列について

    こんにちは。C言語初心者です。 文字の配列で下のようなプログラムを作ったとき、入力の際にdefineで指定したN以上の文字数の文字列を入力した場合、その後のプログラム次第で実行が正しかったり、セグメントエラーがでたりします。 コンパイルする際はエラーがでません。 ※その後のプログラムとは、関数strcmpやstrcpyです。 #include <stdio.h> #define N 10 main() { char a[N];   char b[N]; scanf("%s %s", a, b); printf("%s\n", a); printf("%s\n", b); }

  • C言語のプログラムが実行できません。

    C言語のプログラムが実行できません。 コンパイルは出来るんですが、実行すると、「Segmentation fault」と表示されてしまいます。 これは何のエラーなんでしょうか? 基本的な事かもしれませんが、分かる方宜しくお願い致します。

  • デバッグセッションの実行可能ファイル

    Visual C++ 2008 Express EditionでC言語のプログラムをコンパイルし、エラーも警告も出ないので、デバッグ(実行)を行ったところ、 「デバッグセッションの実行可能ファイル」を選択する画面に移りましたが、何を設定したらよいのかさっぱりわかりません。 プログラムは単純なものなので、特にややこしいことはないと思うのですが・・・

専門家に質問してみよう