• ベストアンサー

変数の宣言、初期化

C++を習い始めたばかりの初心者です。下のプログラムを教えてください。 2つの整数値をキーボードから入力し、それをint型変数xとyに格納する。 一方double型変数aとbをそれぞれ5.3と2.5で初期化する。 このときa*x+b*yを算出し出力するプログラムを作成せよ。 本当に始めたばかりなので見当違いなことを書いてるかもしれませんが 自分でやってみるとこんなふうになりました。 #include <iostream> using namespace std; int main() { int x,y; cin>>x>>y;  ←キーボードで入力する。 int a(5.3);  ←初期化 int b(2.5); x=double(a);  ←キャスト y=double(b); cout<<a*x+b*y<<endl; return 0; } お願いします。

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

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

> ということですか? コンパイルして、正しく実行できるかどうか、 まずはご自身で確認してみてください。 > 上書きしているというのはどういうことでしょうか。 最初のコードでは、 > cin>>x>>y;  ←キーボードで入力する。 ここでxとyに整数値を入力した後、 > x=double(a);  ←キャスト > y=double(b); ここでxにaの値を、yにbの値を代入しています。 その結果、最初に入力していたxとyの内容を 更新してしまっています。これが「上書き」です。 今回のプログラムでは、してはまずいですよね。

noname#63549
質問者

お礼

ちゃんとできました。何度もありがとうございます。 x=double(a); y=double(b); は上書きという意味だったんですね。

その他の回答 (2)

  • Interest
  • ベストアンサー率31% (207/659)
回答No.3

int型、double型が何か。データ型について理解されていないものと思います。 int型は、整数を扱います。 double型は、少数まで扱うことができます。 とりうる値の範囲は、本でもネットでもよいのでご自身で調べてみましょう。 ということで、intは整数しか扱えないので、int a; に 5.3を入れようとしてもダメ。 > あと、上書きしているというのはどういうことでしょうか。 x=double(a);  ←キャスト y=double(b); これのことです。これでは、先ほどキーボードから入力した x, yが意味なくなります。この式の意味は、「x に a の値を代入する」ですから。キーボードから入力した x が a で上書きされてしまいます。

noname#63549
質問者

お礼

intが整数値を扱うというのを自分がちゃんと理解してなかったみたいです。 回答ありがとうございます。なんとかできました。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

> double型変数aとbをそれぞれ5.3と2.5で初期化 > int a(5.3);  ←初期化 > int b(2.5); > x=double(a);  ←キャスト > y=double(b); 冗長です。はじめからdouble型で定義してはいかがですか? また、せっかく入力したxとyを上書きしてしまっています。

noname#63549
質問者

補足

double型で定義するというのは #include <iostream> using namespace std; int main() { int x,y; cin>>x>>y; double a(3.5); double b(2.4); cout<<a*x+b*y<<endl; return 0; } ということですか? あと、上書きしているというのはどういうことでしょうか。 すみませんが詳しく教えていただけませんか。

関連するQ&A