C++で分からないプログラムがあるんですが

解決済みの質問

C++で分からないプログラムがあるんですが

ベクトルの加減を行うプログラムを作成せよ。
ベクトルの内積を求めるプログラムを作成せよ。
↑作るプログラムは1つにする(1つにまとめる)

2つのベクトルを適当に初期化して行う事

これ、だれか教えてくれませんか?配列とforを使うんですが、配列も、1次元と2次元しかやってないですし。

こんな感じのレベルだと思うんですが…
#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;
}

本当に誰か助けてください。

投稿日時 - 2009-11-22 21:35:21

連想キーワード:

QNo.5468059

すぐに回答ほしいです

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

自分で作る必要なし。ライブラリに任せるが吉。

#include <iostream>
#include <algorithm>
#include <functional>
#include <iterator>
#include <numeric>
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 y[5];

std::transform(w, w+5, x, y, std::plus<float>());
cout << "w + x = { ";
copy(y, y+5, ostream_iterator<float>(cout," "));
cout << "}\n";

std::transform(w, w+5, x, y, std::minus<float>());
cout << "w - x = { ";
copy(y, y+5, ostream_iterator<float>(cout," "));
cout << "}\n";

float u = inner_product(w, w+5, x, 0.0f);
cout << "内積 = " << u << "です\n";
}

投稿日時 - 2009-11-23 00:32:30

補足

2つのベクトルを適当に初期化して行う事って書いているんですが、これはどうすればいいんですか?

あと、すみません…本当にすみません…
std::transform(w, w+5, x, y, std::plus<float>());

copy(y, y+5, ostream_iterator<float>(cout," "));

float u = inner_product(w, w+5, x, 0.0f);
って表現を習っていないんですが、例文並みに簡単には出来ないでしょうか…

投稿日時 - 2009-11-23 00:45:38

ANo.3

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

[  前へ  |  次へ ]

ベストアンサー以外の回答(5件中 1~5件目)

こんにちは。 #5です。

すみません。 #5の「■補足」について、以下の訂正があります。

<訂正前>
2つのベクトルの計算を行うには、1つのベクトルを表す座標が2点、
2つのベクトル分を合わせて、合計4点の座標が必要だと思われ
ますが、ご提示のソースの下記配列、

<訂正後>
2つのベクトルの計算を行うには、1つのベクトルを表す座標の1点につき、
X座標とY座標の2つの成分が必要だと思います。
2つのベクトル分を合わせると、以下のように合計4つの座標成分(a1、a2、b1、b2)
  ベクトル1: 座標 α = ( a1, a2 )
  ベクトル2: 座標 β = ( b1, b2 )
が必要だと思われますが、ご提示のソースの下記配列、

以上です。 失礼致しました。

投稿日時 - 2009-11-23 02:49:00

こんにちは。

以下は、直接の回答ではないのですみません。
私自身は、数学に関してあまり詳しくありませんので、参考サイトを紹介致します。

下記サイトは、図解入りで、説明も素人から見ても解りやすく解説されていると思い
ますので、参考になるかと思います。

下記サイトでは、それぞれについての「計算式」も記載されていますので、これから
C言語(またはC++)での計算式(及びプログラム)も作成できるかと思います。

■参考サイト
※下記ページは何れも同一サイトです。

ベクトルの和
http://www.geisya.or.jp/~mwm48961/kou2/vector_sum.htm

ベクトルの差
http://www.geisya.or.jp/~mwm48961/kou2/vector_sub.htm

ベクトル成分の計算
http://www.geisya.or.jp/~mwm48961/kou2/v_coord3.html

ベクトルの内積
http://www.geisya.or.jp/~mwm48961/kou2/dot_product0.html

高校数学の基本問題(※上記4つのページのトップページです)
http://www.geisya.or.jp/~mwm48961/koukou/index_m.htm

■補足
2つのベクトルの計算を行うには、1つのベクトルを表す座標が2点、
2つのベクトル分を合わせて、合計4点の座標が必要だと思われ
ますが、ご提示のソースの下記配列、

> float w[] = {1.2,2.3,3.4,4.5,5.6};
> float x[] = {4.8,2.6,1.3,9.1,8.7};

↑この配列が、ベクトルの何(座標?)を表しているのかが解りません。
※当方の理解不足かもしれませんので、その際はすみません。

以上です。

投稿日時 - 2009-11-23 01:50:10

ANo.4

...ひょっとしてベクトルの加減算のやり方知らないんですか?
紙とエンピツで筆算するのと同じ手順を踏めばいいですよ?

投稿日時 - 2009-11-23 01:39:15

ANo.2

>ベクトルの内積はこれじゃないんですか?
>だったらもう分かんないです

あきらめる前に、教科書やインターネットなどで調べてみましょう。

投稿日時 - 2009-11-22 23:19:52

補足

それで載ってたのがこれなんですよ
#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;
}
どっちか1つでいいからお願いします

投稿日時 - 2009-11-23 00:00:24

ANo.1

そんな感じ.
「ベクトルの加減」はどのように計算すればいいのか, あるいは「ベクトルの内積」はどのように計算すればいいのか理解できていればそんなに難しくないはず.

投稿日時 - 2009-11-22 22:19:47

補足

ベクトルの内積はこれじゃないんですか?
だったらもう分かんないです

投稿日時 - 2009-11-22 23:17:16

あわせてチェックしたい
  • std::cout << p と std::cout << *p の違 ...
  • C++ : cout << (数字) で実行時エラーが発生する理由 ...
  • coutの出力バッファ ...
PR
【回答募集中】花粉にひと言、物申す![ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら