Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2011, 01:32   #1
mego4el
Пользователь
 
Аватар для mego4el
 
Регистрация: 19.09.2010
Сообщений: 87
Восклицание преобразование типов (класс вектор) C++

Доброй ночи ув. форумчане. Пожалуйста помогите сделать преобразования типов, пытался что-то навоять, прочитал немало материала по этой теме, но ничего толком не получается (это видно в моих попытках преобразовать, в коде), преобразования нужны следующие:

- Vector в Char (представить вектор ввиде символов x,y,z)
- Vector в String (представить вектор ввиде символов x,y,z)
- Vector в float
- Vector в double

так же из этих типов обратно что бы можно было преобразовать допустим из char в Vector, String в Vector, float в Vector ... etc..

т.е. преобразования в обе стороны, из и в.

Код:
#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[i]=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[i]*obj[i];
		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[i]=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[i];
		}
		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;
}
очень благодарен всем кто хоть как нибудь поможет.
mego4el вне форума Ответить с цитированием
Старый 21.12.2011, 11:23   #2
mego4el
Пользователь
 
Аватар для mego4el
 
Регистрация: 19.09.2010
Сообщений: 87
По умолчанию

up, подскажите плз!
mego4el вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс вектор challengerr Паскаль, Turbo Pascal, PascalABC.NET 6 05.09.2011 13:02
класс N-Мерный вектор neon0858 Помощь студентам 0 01.06.2011 00:28
Класс-Контейнер Вектор Zorg2 Помощь студентам 1 10.04.2011 22:32
C++ создать класс Вектор Drakowa Помощь студентам 2 29.03.2011 17:06
С++класс-вектор cati Помощь студентам 4 21.04.2010 21:58