Форум программистов, компьютерный форум CyberForum.ru

Помогите с задачей пожалуйста. Перегрузка операций. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В заданной строке найти координаты подстроки http://www.cyberforum.ru/cpp-beginners/thread6826.html
Помогите решить задачу.В заданной строке найти координаты подстроки(т.е номер первого и последнего ее символа),содержащей большее кол-во пробелов.Задача не трудная,если бы не пару нюансов. 1)Задача пишется в стандарте СИ 2)ВВод исходной строки происходит из файла,т.е организовать char нельзя,т.к и динамику нельзя использовать 3)Самое главное.все нужно делать с помощью билиотеки string.h,т.е...
C++ Взялся учить C++. НИЧЕГО не выходит. Скачал вот dev-C++, нарыл кучу литературы по С++, дважды перечитал ее, и из предложенного в книгах, у меня не вышло НИЧЕГО. Дело в том, что я совершенно не знаком ни с какими языками программирования. В книгах, как правило, все подробно разжовывают, а потом, предлагают написать программу. Пишу то, из чего собственно и предлагают слепить прогу в книгах. Пробую скомпилировать, и при компиляции... http://www.cyberforum.ru/cpp-beginners/thread6786.html
C++ Клонированный итератор
Помогите пожалуста написать код программы: Определить клонированный итератор для параметризующих контейнеров с прямым доступом. Применить его для реализации сортировки слиянием и функции поиска делением пополам.
Абстрактный класс Pyramid C++
Помогите пожалуста написать код программы: Определить абстрактный класс треугольных пирамид Pyramid и построить иерархию: пирамида, правильная пирамида, срезанная пирамида.
C++ Клас Prism http://www.cyberforum.ru/cpp-beginners/thread6782.html
Помогите пожалуста написать код программы: Определить класс треугольных призм Prism, предусмотрев функции доступа к его составляющим: основ Base, боковых граней Face, ребер Edge и вершин Vertex.
C++ Помощь в написании программы Помогите пожалуста написать код программы: В круг заданного радиуса r с центром в начале координат вписан правильный многоугольный Polygon. Конструктор строит его вершини в направлении, противоположному движению часовой стрелки, начиная с вершини (r,0). Определить копировальное присвоение многоугольных и мультиконструктор копирование с соответствующим увеличением или уменьшением числа вершин на... подробнее

Показать сообщение отдельно
SL1M
0 / 0 / 0
Регистрация: 25.03.2008
Сообщений: 22

Помогите с задачей пожалуйста. Перегрузка операций. - C++

25.03.2008, 14:46. Просмотров 2336. Ответов 11
Метки (Все метки)

Всем привет! Я новичок в изучении СИ, не могу разобраться как выполнить задачу.
Вариант следующий. Вектор в пятимерном евклидовом пространстве задается пятеркой своих координат. Реализовать:
1. сложение (вычитание) векторов;
2. скалярное произведение векторов;
3. векторное произведение векторов (операция %);
4. умножение вектора на скаляр.



Первые два пунка я вроде еле как выполнил. Да и второй пункт выполнил как-то неправильно, кажется. Хотя в принципе работает... Как реализовать остальное?




Код
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
int s;
class vect {
public:
   vect(int=0,int=0,int=0,int=0,int=0); //Конструктор
   vect operator+(const vect &) const;   //Сложение
   vect operator-(const vect &) const;//Вычитание
   vect operator*(const vect &); //Умножение
   void print() const;//Печать
   private:
   int a,b,c,d,e;
};

//Конструктор:
vect::vect(int a1,int b1,int c1,int d1,int e1)
{
   a = a1;
   b = b1;
   c = c1;
   d = d1;
   e = e1;
}

//Перегруженная операция сложения:
vect vect::operator+(const vect &operand2) const
{
   vect sum;
   sum.a = a + operand2.a;
   sum.b = b + operand2.b;
   sum.c = c + operand2.c;
   sum.d = d + operand2.d;
   sum.e = e + operand2.e;
   return sum;
}

//Перегруженная операция вычитания:
vect vect::operator-(const vect &operand2) const
{
   vect diff;
   diff.a = a - operand2.a;
   diff.b = b - operand2.b;
   diff.c = c - operand2.c;
   diff.d = d - operand2.d;
   diff.e = e - operand2.e;
   return diff;
}

//Перегруженная операция умножения:
vect vect::operator*(const vect &operand2)
{
   vect proizv;
   proizv.a = a * operand2.a;
   proizv.b = b * operand2.b;
   proizv.c = c * operand2.c;
   proizv.d = d * operand2.d;
   proizv.e = e * operand2.e;
   s = proizv.a + proizv.b + proizv.c + proizv.d + proizv.e;
   return proizv,s;
}

//Печать объекта в виде (a,b,c,d,e)
void vect::print() const
{
   cout<<'('<<a<<", "<<b<<", "<<c<<", "<<d<<", "<<e<<')';
}


void main()
{
   vect x(5,6,7,8,9),y(4,3,2,1,7);
   vect z;
   cout<<"\n Vector 1:   ";
   x.print();
   cout<<"\n Vector 2:   ";
   y.print();

   z = x + y;
   cout<<"\n Slozhenie:   ";
   z.print();

   z = x - y;
   cout<<"\n Vichitanie:  ";
   z.print();

   z = x * y;
   cout<<"\n Scalar:   "<<s;
   getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru