znaci ovo je moj program i ako bi mi itko mogao pomoci oko problema...imam funkciju skalarni produkt SkProdukt koju moram koristiti za pomnozit matricu i vektor u funkciji PomnoziMatVekt...e sad moj problem je kako napravit da mi ta funkcija vraca produkt koji je oblika vektor? unaprijed hvala
#include <iostream>
#include <iomanip>
#include <math.h>
#include <vector>
#include <assert.h>
using namespace std;
struct Vektor3D
{
vector<double> e;
Vektor3D() {
e.resize(3);
}
Vektor3D(double pX, double pY, double pZ) {
e.resize(3);
e[0]=pX;
e[1]=pY;
e[2]=pZ;
}
Vektor3D(vector<double> p) {
assert( p.size()==3 );
e=p;
}
};
vector<double> komponente;
struct Matrica3D
{
vector< Vektor3D > r;
Matrica3D() {
r.resize(3);
}
Matrica3D(Vektor3D a, Vektor3D b, Vektor3D c){
r.resize(3);
r[0] = a;
r[1] = b;
r[2] = c;
}
Matrica3D(vector< vector<double> > p) {
r.resize(3);
assert( p.size()==3 );
r[0] = Vektor3D( p[0] );
r[1] = Vektor3D( p[1] );
r[2] = Vektor3D( p[2] );
}
};
Vektor3D Zbroji(Vektor3D v1, Vektor3D v2) {
return Vektor3D(
v1.e[0]+v2.e[0],
v1.e[1]+v2.e[1],
v1.e[2]+v2.e[2]
);
}
double SkProdukt(Vektor3D v1, Vektor3D v2) {
return v1.e[0]*v2.e[0] + v1.e[1]*v2.e[1] + v1.e[2]*v2.e[2];
}
Vektor3D DobaviStupac(Matrica3D m, int i){
assert(i>=0 && i<3);
return Vektor3D( m.r[0].e[i], m.r[1].e[i], m.r[2].e[i]);
}
Vektor3D DobaviRedak(Matrica3D m, int i){
assert(i>=0 && i<3);
return m.r[i];
}
void IspisiVektor(Vektor3D a)
{
cout<<a.e[0]<<"i+ "<<a.e[1]<<"j+ "<<a.e[2]<<"k"<<endl;
}
void Ispisi(Vektor3D a)
{
cout<<a.e[0]<<" "<<a.e[1]<<" "<<a.e[2]<<" "<<endl;
}
void IspisiMatricu(Matrica3D m)
{
Ispisi(DobaviRedak(m,0));
Ispisi(DobaviRedak(m,1));
Ispisi(DobaviRedak(m,2));
}
Vektor3D PomnoziMatVekt(Matrica3D m ,Vektor3D a)
{
SkProdukt (m.r[0], a);
SkProdukt (m.r[1], a);
SkProdukt (m.r[2], a);
}
int main()
{
Vektor3D vektor1 (5,7,3);
Vektor3D vektor2 (4,5,6);
Vektor3D vektor3 (6,9,3);
Vektor3D vektor4 (1,2,3);
Vektor3D vektor5 (2,3,4);
Matrica3D m1 (vektor1,vektor2,vektor3);
Matrica3D m2 (vektor4,vektor5,vektor1);
IspisiVektor(vektor1);
IspisiMatricu(m1);
}