#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
const int col=system("color 17");
class Vector
{
double coords[3]; //координаты вектора
char cX[1], cY[1], cZ[1];
public:
//перегрузка оператора квадратных скобок, для индексации обьектов
double &operator[](int i)
{
int k=i%3;
return coords[k];
}
//перегрузка скобок, для присваивания координатам значений
Vector operator() (double x, double y, double z)
{
coords[0]=x;
coords[1]=y;
coords[2]=z;
return *this;
}
//перегрузка скобок, для вычисления вект. произведения
Vector operator () (Vector a, Vector b)
{
for (int i=0;i<3;i++)
coords=a[i+1]*b[i+2]-a[i+2]*b[i+1];
return *this;
}
//перегрузка звездочки, для вычисления скалярного произведения
double operator* (Vector obj)
{
double res=0;
for (int i=0;i<3;i++)
res+=coords*obj;
return res;
}
Vector(double x, double y, double z)
{
coords[0]=x;
coords[1]=y;
coords[2]=z;
}
//в массив
operator double*()
{
return coords;
}
// вычитание векторов
Vector operator - (Vector &rhs)
{
return Vector(coords[0]-rhs.coords[0], coords[1]-rhs.coords[1], coords[2]-rhs.coords[2]);
}
//метод для отображения координат
void show()
{
cout<<"("<<coords[0]<<", "<<coords[1]<<","<<coords[2]<<")\n";
}
Vector()
{
for (int i=0;i<3;i++)
coords=0;
}
Vector (Vector &vect){coords[0]=vect.cX[1]; coords[1]=vect.cY[1]; coords[2]=vect.cZ[1];}
/*operator char*()
{
double i=5;
char d1=char(i); //явное double к char
char d2=i; //неявное
Vector vect(5,2,1);
char d3=char(vect); //явное Vector в char
char d4=vect; //неявное
return coords;
}
operator string()
{
stringstream result;
result<<'(';
for (int i=0; i < 3; ++i)
{
if (i>0) result << ',';
result<<coords;
}
result<<')';
return result.str();
}*/
Vector operator - ()
{
return Vector( -coords[0], -coords[1], -coords[2] ); //отриц направление
};
Vector operator++ (int)
{
double x;
double y;
double z;
x=+1;
y=+2;
z=+3;
return *this;
}
};
int main()
{
Vector a,b,c,m1,m2,st,v;
//вычитание
m1(3,3,3);
m2(1,2,1);
cout<<"m1 = "; m1.show();
cout<<"m2 = "; m2.show();
m1=m1-m2;
cout<<"m1-m2 = "; m1.show();
//в указатель на double, указывающий на начало мсассива
cout<<"mas = ";
for (double *p = st; p != st+3; ++p)
{
cout<<*p<<" ";
st(1,2,3);
}
cout<<endl;
//в строку
//v(1,2,3);
//string str = v;
//cout<<"vector to string = "<<"(x,y,z)"<<endl;
//----
a(1,-3,4);
b(2,1,3);
cout<<"a = "; a.show();
cout<<"b = "; b.show();
cout<<"a*b="<<a*b<<endl; //скалярное произвед
c(a,b); //векторное произвед
cout<<"[ab]=";
c.show();
return 0;
}
преобразование типов (класс вектор) C++
- Vector в Char (представить вектор ввиде символов x,y,z)
- Vector в String (представить вектор ввиде символов x,y,z)
- Vector в float
- Vector в double
так же из этих типов обратно что бы можно было преобразовать допустим из char в Vector, String в Vector, float в Vector ... etc..
т.е. преобразования в обе стороны, из и в.
Код:
очень благодарен всем кто хоть как нибудь поможет.
up! плз подскажите
upp!!!!!!!!!!!!!