• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語の質問です。)

C言語の質問:計算と変数について

このQ&Aのポイント
  • C言語での計算式 (a*b)/(a+b) を実行したい。変数の代入方法について教えてください。
  • 整数の変数aに 2.147.483.647 を代入し、1を加えた結果について教えてください。実数の変数dに対して、d = 1/2, d = 1.0/2 の結果についても教えてください。
  • 実数の変数d1、d2、d3に対して、d3 = d1 - d2 の計算結果について教えてください。d1 = 0.1, d2 = 0.01, d1 = 1.0, d2 = 1.0000000000000, d1 = 1.0, d2 = 0.00000000000000001 とします。

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

  • ベストアンサー
  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.3

1. double a,b,S ; // 最後のセミコロンがありませんし、Sが定義されていません。 // ここに a = xx ;やb = xx ;といった代入が無いとエラーになります。 S=(a*b)/(a+b); // ここもセミコロンがありませんしSが定義されていません。 printf("%f\n",S) // ここもセミコロンがありません。また\は\だと理解していると思います。 2. 整数の変数aに2,147,483,647をいれ、1を加えるとどうなるかという事でしょうか? 整数と言うとint型ですか、long型ですか。 恐らく指定している数値からlong型だとして、1を加えるとオーバーフローして、-2147483648になる場合もありますが、オーバーフローしているので正しいとは言えませんね。 dはdouble型だとして d=1/2とするとd=0です。 なぜかと言うと、1や2はint型となり、intとして計算してdに代入してしまします。 d=1.0/2とするとd=0.5です。 これは1.0がdouble型で、2がint型であったとしてもdouble型として計算します。 include <stdio.h> main() {   double d1,d2,d3 ;   d1 = 0.1 ;   d2 = 0.001 ;   d3 = d1-d2 ;   printf("%22.16g-%22.16g=%22.16g\n",d1,d2,d3);   d1 = 1.0 ;   d2 = 1.00000000000000 ;   d3 = d1-d2 ;   printf("%22.16g-%22.16g=%22.16g\n",d1,d2,d3);   d1 = 1.0 ;   d2 = 0.00000000000000001 ;   d3 = d1-d2 ;   printf("%22.16g-%22.16g=%22.16g\n",d1,d2,d3); }

admins
質問者

補足

ご回答ありがとうございます。 差し支えなければ、 この補足に回答をお願い致します。 「あなたは、どうやってプログラムを考えて作成をし、また、何故、間違っている点が分かり、それをデバック・修正することができるのですか?」

その他の回答 (6)

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.7

>「あなたは、どうやってプログラムを考えて作成をし、また、何故、間違っている点が分かり、それをデバック・修正することができるのですか?」 まずはプログラム言語の仕様をしっかり覚える事です。 今回の問題で一番目立ったのは式の最後のセミコロン(;)が抜けている事です。これはC言語でのルールですので、ルールを守れなければ正常に動作しないという事ですね。 次に、いきなりコーディングするのでは無く、フローチャートを書いて、問題が無ければコーディングという風にした方がいいでしょう。 但し、今回の様な問題は条件付き分岐といった事は一切なく、上から下へ流れるだけのプログラムに理由はいらないと思います。 これが出来ないのは、ルールを知らないからですね。 では、私はどの様にプログラムを考えているのかというと、昔はよく考えながらやっていたのですが、今は特に考えなくて出来てしまっているというのが現状です。恐らく、ルールが身に付いてしまっているのでしょう。 とにかくルール(仕様)を覚え、たくさんのプログラムを見て、たくさんのプログラムを作る事です。 なぜ、間違いを修正出来るのかですが、私も初心者の頃はたくさん間違いを起こして、コンパイラがエラーを吐いて一つずつエラーの意味を調べ、修正してという事を繰り返しやってきました。 貴方も無意識に日本語をしゃべったり、読んだり、書いたり出来るでしょう。 使い慣れない単語を使ったりすると使い方を間違えたりするのと同じです。 とにかく習うより慣れろです。 がんばってください。

admins
質問者

補足

「とにかく習うより慣れろです。 」良き言葉をいただきました。ありがとうございます。しかし、何かと基本から考える方法・手順等が分からず・・・とまどったりしますが、またよろしくお願い致します。

回答No.6

> 「あなたは、どうやってプログラムを考えて作成をしますか? 考え方・過程を教えて下さい。(例えば今回のプログラム・・・)」 定石に従います。 今回のプログラムでは、考えることは何もありません。 計算し表示する、それだけです。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.5

Cコンパイラをお持ちでないのであれば、フリーのBorland C++ Compiler 5.5を使ってみると良いかもしれませんね。

参考URL:
http://www.borland.co.jp/cppbuilder/freecompiler/
admins
質問者

補足

教えて頂きまして、ありがとうございました。 早速コンパイラの方、DLしましたよ。 arukamun 様の他の回答に対して補足を 加えました。良かったらよろしくお願いいたします。

回答No.4

...コンパイラをお持ちではないのですか?

admins
質問者

補足

ご回答ありがとうございます。 コンパイラについては、 無料でDLできるトコロを教えて頂きました。 差し支えなければ、 この補足に回答をお願い致します。 「あなたは、どうやってプログラムを考えて作成をしますか? 考え方・過程を教えて下さい。(例えば今回のプログラム・・・)」

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.2

まず、自分でやってみてください。 その結果わからない点があれば質問するようにした方が身に付くと思います。

admins
質問者

補足

ご回答ありがとうございます。 差し支えなければ、 この補足に回答をお願い致します。 「あなたは、どうやってプログラムを考えて作成をしますか? エキスパートの方の考え方の本質をお聞かせ願えますか?」

  • kajyukun
  • ベストアンサー率18% (157/842)
回答No.1

4~6行目の最後に ; が必要ですね。 Sも定義しないとだめです。 \は全角のようですが、\でよいはずです。

admins
質問者

補足

ご回答ありがとうございます。 差し支えなければ、 この補足に回答をお願い致します。 「あなたは、どうやってプログラムを作成し、 どうしてそれが、だめだとか分かり、、デバックができるのですか?」

関連するQ&A