電子書籍の厳選無料作品が豊富!

1.(a*b)/(a+b)の計算をさせたいのです。ふつうに変数は代入される方法でいいです。
#include <stdio.h>
main()
{
double a,b
S=(a*b)/(a+b)
printf ("%f\n",S)
}
上記のプログラムでできますか?間違いならば修正・訂正をお願いします。

2.整数の変数aに2.147.483.647をいれ、1を加えるとどうなるか?
実数の変数dに、
d=1/2とするとどうなるか?
d=1.0/2とするとどうなるか?
実数の変数d1,d2,d3に対して、
d3=d1-d2を計算するとどうなるか?
出力は、「%22.16g-%22.16g=%22.16g」の書式で、d1,d2,d3を出力しましょう。
d1 | d2
0.1 | 0.01
1.0 | 1.0000000000000 (0は14個)
1.0 | 0.00000000000000001 (0は16個)

上記のようなプログラムでOKです。教えて下さい。

A 回答 (7件)

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);
}

この回答への補足

ご回答ありがとうございます。

差し支えなければ、
この補足に回答をお願い致します。

「あなたは、どうやってプログラムを考えて作成をし、また、何故、間違っている点が分かり、それをデバック・修正することができるのですか?」

補足日時:2003/05/12 02:39
    • good
    • 0

>「あなたは、どうやってプログラムを考えて作成をし、また、何故、間違っている点が分かり、それをデバック・修正することができるのですか?」



まずはプログラム言語の仕様をしっかり覚える事です。
今回の問題で一番目立ったのは式の最後のセミコロン(;)が抜けている事です。これはC言語でのルールですので、ルールを守れなければ正常に動作しないという事ですね。

次に、いきなりコーディングするのでは無く、フローチャートを書いて、問題が無ければコーディングという風にした方がいいでしょう。

但し、今回の様な問題は条件付き分岐といった事は一切なく、上から下へ流れるだけのプログラムに理由はいらないと思います。
これが出来ないのは、ルールを知らないからですね。

では、私はどの様にプログラムを考えているのかというと、昔はよく考えながらやっていたのですが、今は特に考えなくて出来てしまっているというのが現状です。恐らく、ルールが身に付いてしまっているのでしょう。
とにかくルール(仕様)を覚え、たくさんのプログラムを見て、たくさんのプログラムを作る事です。

なぜ、間違いを修正出来るのかですが、私も初心者の頃はたくさん間違いを起こして、コンパイラがエラーを吐いて一つずつエラーの意味を調べ、修正してという事を繰り返しやってきました。
貴方も無意識に日本語をしゃべったり、読んだり、書いたり出来るでしょう。
使い慣れない単語を使ったりすると使い方を間違えたりするのと同じです。

とにかく習うより慣れろです。

がんばってください。

この回答への補足

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

補足日時:2003/05/13 00:01
    • good
    • 0

> 「あなたは、どうやってプログラムを考えて作成をしますか? 考え方・過程を教えて下さい。

(例えば今回のプログラム・・・)」

定石に従います。
今回のプログラムでは、考えることは何もありません。
計算し表示する、それだけです。
    • good
    • 0

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



参考URL:http://www.borland.co.jp/cppbuilder/freecompiler/

この回答への補足

教えて頂きまして、ありがとうございました。
早速コンパイラの方、DLしましたよ。

arukamun 様の他の回答に対して補足を
加えました。良かったらよろしくお願いいたします。

補足日時:2003/05/12 02:42
    • good
    • 0

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

この回答への補足

ご回答ありがとうございます。

コンパイラについては、
無料でDLできるトコロを教えて頂きました。

差し支えなければ、
この補足に回答をお願い致します。

「あなたは、どうやってプログラムを考えて作成をしますか? 考え方・過程を教えて下さい。(例えば今回のプログラム・・・)」

補足日時:2003/05/12 02:40
    • good
    • 0

まず、自分でやってみてください。


その結果わからない点があれば質問するようにした方が身に付くと思います。

この回答への補足

ご回答ありがとうございます。

差し支えなければ、
この補足に回答をお願い致します。

「あなたは、どうやってプログラムを考えて作成をしますか? エキスパートの方の考え方の本質をお聞かせ願えますか?」

補足日時:2003/05/12 02:39
    • good
    • 0

4~6行目の最後に ; が必要ですね。


Sも定義しないとだめです。
\は全角のようですが、\でよいはずです。

この回答への補足

ご回答ありがとうございます。

差し支えなければ、
この補足に回答をお願い致します。

「あなたは、どうやってプログラムを作成し、
どうしてそれが、だめだとか分かり、、デバックができるのですか?」

補足日時:2003/05/12 02:38
    • good
    • 0

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