こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C++の配列について

#include <iostream>
using namespace std;

int main() {
float w[] = {1.2,2.3,3.4,4.5,5.6};
float x[] = {4.8,2.6,1.3,9.1,8.7};
float u = 0.0;
int i;

for(i=0;i<5;i=i++) {
u += w[i] * x[i];
}

cout << "u=" << u << "です\n";

return 0;
}

u=105.83って出たんですが、これは何をしているプログラムなんですか

投稿日時 - 2009-11-15 20:30:54

QNo.5450649

すぐに回答ほしいです

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

> これは何をしているプログラムなんですか
u += w[i] * x[i];
と書かれている通り、2つの配列の各要素の積を合計したものを
出力するプログラムでしょう。

質問内容とは関係ないですが、
for文の第3パラメータ「i=i++」は、コンパイルエラーにも
動作エラーにもなりませんが、変なコーディングです。
「頭痛が痛い」と言っているような感じですね。

投稿日時 - 2009-11-15 21:47:57

補足

i=i+1でしたすみません。

それでも一緒ですか?

あと、各要素の積の合計っていうのは1.2*4.8+2.3*2.6+…=みたいな感じですか?

投稿日時 - 2009-11-15 21:49:02

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

i=i++は副作用完了点までにiの値を2回変更しているので、未定義動作ですよ。書いてはいけないコードです。

投稿日時 - 2009-11-16 10:04:51

ANo.2

float w[] = {1.2,2.3,3.4,4.5,5.6};
float x[] = {4.8,2.6,1.3,9.1,8.7};
(1.2*4.8)+(2.3*2.6)+・・・+(5.6*8.7)
をuに代入して表示するプログラムです

※i=i++はi=i+1でもおかしくはないですが
forで1ずつ足すというのはi++にするのがポピュラーです
for(i=0;i<5;i++)

投稿日時 - 2009-11-15 23:42:52