Предыдущий пост -
Следующий пост -

Тип Vec4.

Рубрика: C++, Дата: 25 March, 2013, Автор:
Tags:

Определите тип Vec4 как вектор из 4 элементов типа float. Определите операцию [] для Vec4. Определите операции +, -, *, /, =, +=, -=, *=, /= для комбинации операндов типа Vec4 и типа float.

Опять ничего не ясно с условия задачи. От первое допустим “определите тип Vec4” – это значит, что нам нужно определить класс Vec4 ну ок допустим, идем дальше “как вектор из 4 элементов типа float” тут уже не сильно ясно как же мне определить? Мне, что нужно в классе Vec4 создать вектор из 4 элементов типа float? Ладно будем создавать вектор в классе. Дальше “определите операцию [] для Vec4” ну тут уже более ясно перегрузим operator[](int). Ну и остальные операции там вроде все как бы ясно. Ну, что ж приступим.

Все ток доделал от код файла Vec4.h:

//ob69vlenei Vec4
#ifndef VEC4_H
#define VEC4_H
#include <vector>
using std::vector;

class Vec4
{
	vector<float> vec;
public:
	//konctryktor po ymolchaniyu
	Vec4();
	
	//konctryktor kopii
	Vec4(Vec4& a);
	
	//konctryktor preobrazovani9
	Vec4(float a);
	
	//dl9 ne const
	float& operator[](int i);
	
	//dl9 const ob6ektov
	float operator[](int i) const;
	
	Vec4& operator=(const Vec4& a);
	
	//pechat6
	void print();
	
	
	Vec4& operator+=(const Vec4& a);
	Vec4& operator-=(const Vec4& a);
	Vec4& operator*=(const Vec4& a);
	Vec4& operator/=(const Vec4& a);
};

Vec4 operator+(const Vec4 a, const Vec4 b);
Vec4 operator-(const Vec4 a, const Vec4 b);
Vec4 operator*(const Vec4 a, const Vec4 b);
Vec4 operator/(const Vec4 a, const Vec4 b);

#endif

файл Vec4.cpp:

//opredelenie klacca Vec4
#include <iostream>
using std::cout;
using std::endl;

#include "Vec4.h"
//konctryktor po ymolchaniyu
Vec4::Vec4()
{
	for(int i=0;i<4;i++)
		vec.push_back(0);
}

//konctryktor kopii
Vec4::Vec4(Vec4& a)
{
	for(int i=0;i<4;i++)
		vec.push_back(a.vec[i]);
}

//konctryktor preobrazovani9
Vec4::Vec4(float a)
{
	for(int i=0;i<4;i++)
		vec.push_back(a);
}

//dl9 ne const
float& Vec4::operator[](int i)
{
	if(i>=0&&i<4)
		return vec[i];
}

//dl9 const ob6ektov
float Vec4::operator[](int i) const
{
	if(i>=0&&i<4)
		return vec[i];
}

Vec4& Vec4::operator=(const Vec4& a)
{
	for(int i=0;i<4;i++)
	{
		vec[i]=a.vec[i];
	}
	
	return *this;
}

void Vec4::print()
{
	for(int i=0;i<4;i++)
	{
		cout <<vec[i]<<' ';
	}
	cout <<endl;
}

Vec4& Vec4::operator+=(const Vec4& a)
{
	for(int i=0;i<4;i++)
	{
		vec[i]+=a.vec[i];
	}
	
	return *this;
}

Vec4& Vec4::operator-=(const Vec4& a)
{
	for(int i=0;i<4;i++)
	{
		vec[i]-=a.vec[i];
	}
	
	return *this;
}

Vec4& Vec4::operator*=(const Vec4& a)
{
	for(int i=0;i<4;i++)
	{
		vec[i]*=a.vec[i];
	}
	
	return *this;
}

Vec4& Vec4::operator/=(const Vec4& a)
{
	for(int i=0;i<4;i++)
	{
		vec[i]/=a.vec[i];
	}
	
	return *this;
}

Vec4 operator+(const Vec4 a, const Vec4 b)
{
	Vec4 c;
	for(int i=0;i<4;i++)
	{
		c[i]=a[i]+b[i];
	}
	
	return c;
}

Vec4 operator+(const Vec4 a, const float b)
{
	Vec4 c;
	for(int i=0;i<4;i++)
	{
		c[i]=a[i]+b;
	}
	
	return c;
}

Vec4 operator-(const Vec4 a, const Vec4 b)
{
	Vec4 c;
	for(int i=0;i<4;i++)
	{
		c[i]=a[i]-b[i];
	}
}

Vec4 operator-(const Vec4 a, const float b)
{
	Vec4 c;
	for(int i=0;i<4;i++)
	{
		c[i]=a[i]-b;
	}
}

Vec4 operator*(const Vec4 a, const Vec4 b)
{
	Vec4 c;
	for(int i=0;i<4;i++)
	{
		c[i]=a[i]*b[i];
	}
}

Vec4 operator*(const Vec4 a, const float b)
{
	Vec4 c;
	for(int i=0;i<4;i++)
	{
		c[i]=a[i]*b;
	}
}

Vec4 operator/(const Vec4 a, const Vec4 b)
{
	Vec4 c;
	for(int i=0;i<4;i++)
	{
		c[i]=a[i]/b[i];
	}
}

Vec4 operator/(const Vec4 a, const float b)
{
	Vec4 c;
	for(int i=0;i<4;i++)
	{
		c[i]=a[i]/b;
	}
}

и файл main.cpp:

//klacc Vec4
#include <iostream>
using std::cout;
using std::endl;

#include "Vec4.cpp"

int main()
{
	Vec4 a;
	//cout <<a.vec[1]<<endl;
	a[1]=4343.4;
	cout <<a[1]<<endl;
	Vec4 b(a);
	cout <<b[0]<<' '<<b[1]<<endl;
	Vec4 c;
	c=b;
	cout <<c[0]<<' '<<c[1]<<endl;
	b[0]=2; a[0]=3;
	c=a+b;
	c.print();
	a.print();
	c-=a;
	c.print();
	
	c+=1;//crabotaet konctryktor preobrazovani9
	c.print();
	
	c=c+14;
	c.print();
	
	return 0;
}

Да как то быстро я ее сделал. Я от уже смотрю когда руки набиты, то быстро делаешь. Решаем следующую.

rss