Mam do zrobienia iloczyn skalarny wybranych przez siebie wektorów w klasie. Do tego muszę przeciążyć operator *. Tylko nie wiem czy błąd jest przy funkcji czy deklaracji przeciazenia. RObię to po raz pierwszy więc nie wiem jak się z tym obchodzić zbytnio.
#include<iostream>
#include <math.h>
using namespace std;
class Wektor
{
private:
int liczba;
int *poczatek;
public:
Wektor(int n);
void Wpisz();
void Wypisz();
double Dlugosc();
void DodajWekt(Wektor b);
void Mnoz();
double skalarny(Wektor a,Wektor b);
void operator+=(Wektor b);
void operator*(Wektor b);
void operator=(Wektor b);
};
Wektor::Wektor(int n)
{
poczatek = new int[liczba = n];
for(int i=0;i<n;i++)
{
poczatek[i]= 0;
}
}
void Wektor::Wpisz()
{
cout<<"wpisz elementy do wektora"<<endl;
for(int i=0;i<liczba;i++)
{
cin>>poczatek[i];
}
}
void Wektor::Wypisz()
{
cout<<"Elementy wektora"<<endl;
for(int i=0;i<liczba;i++)
{
cout<<poczatek[i]<<endl;
}
}
double Wektor::Dlugosc()
{
double kwadrat=0;
double suma=0;
double dlugosc=0;
for(int i=0;i<liczba;i++)
{
kwadrat=poczatek[i]*poczatek[i];
suma=suma+kwadrat;
}
dlugosc=sqrt(suma);
cout<<"Dlugosc wektora to= "<<dlugosc;
return dlugosc;
}
void Wektor::DodajWekt(Wektor b)
{
for(int i=0;i<liczba;i++)
{
poczatek[i]=poczatek[i]+b.poczatek[i];
}
}
void Wektor::Mnoz()
{
int a;
cout<<"Przez ile pomnozyc?= "<<endl;
cin>>a;
for(int i=0;i<liczba;i++)
{
poczatek[i]=poczatek[i]*a;
}
}
double Wektor::skalarny(Wektor a,Wektor b)
{
double alfa, iloczynsk, licznik=0, mianownik=0,pom=0,raz,dwa;
for(int i=0; i<liczba;i++)
{
licznik=poczatek[i]*b.poczatek[i];
licznik+=pom;
}
raz=a.Dlugosc();
dwa=b.Dlugosc();
for(int i=0; i<2;i++)
{
mianownik=raz+dwa;
}
alfa=acos(licznik/mianownik);
iloczynsk=a.Dlugosc()*b.Dlugosc()*alfa;
return iloczynsk;
}
void Wektor::operator+=(Wektor b)
{
for(int i=0;i<liczba;i++)
{
poczatek[i]=poczatek[i]+b.poczatek[i];
}
}
void Wektor::operator*(Wektor b)
{
double pom=0, licznik=0;
for(int i=0; i<liczba;i++)
{
licznik=poczatek[i]*b.poczatek[i];
licznik+=pom;
}
}
void Wektor::operator=(Wektor b)
{
if(this ==&b)
cout<<"Nie mozna przypisac sobie tego samego obiektu"<<endl;
else
delete[] poczatek;
poczatek = new int[liczba=b.liczba];
for(int i=0;i<liczba;i++)
{
poczatek[i]=b.poczatek[i];
}
}
int main()
{
int x, y,z=0;
cout <<"Ilu elementowa ma byc tablica?"<<endl;
cin>>x;
Wektor jeden(x);
cout <<"wpisz elementy pierwszego wektora"<<endl;
jeden.Wpisz();
cout <<"Ilu elementowa ma byc tablica?"<<endl;
cin>>y;
Wektor dwa(y);
cout <<"wpisz elementy drugiego wektora"<<endl;
dwa.Wpisz();
Wektor trzy(z);
jeden*dwa;
trzy.skalarny(jeden,dwa);
system("pause");
return 0;
}