Автор: MihaNix
Дата сообщения: 20.05.2012 12:57
Требуется выполнить задачу примерно такого характера:
/*
Описать класс вектор на плоскости,
содержащий координаты его начала и
конца, методы вывода координат на
экране и нахождения длины. Описать
производный класс, дополнительно содержащий
функцию умножения вектора на число,
скалярного произведения векторов и
сложения двух векторов. Продемонстрировать
работу всех созданных методов.
Предусмотреть интерфейс работы
пользователя с программой на основе меню.
*/
#include<stdio.h>
#include<math.h>
class vector
{
double x,y;
public:
vector(double vX=0, float vY=0) { x=vX; y=vY;} // конструктор
~vector ();
friend vector operator+(vector a, vector b); //сложение векторов
friend vector operator-(vector a, vector b); //вычитание векторов
friend vector operator*(vector a, double scalar); //умножение вектора на скаляр
friend double operator*(vector a, vector b); //скалярное произведение векторов
friend vector operator%(vector a, vector b); //векторное произведение векторов
friend double abs(vector a); //модуль вектора
};
vector operator+(vector a, vector b)
{
vector temp;
temp.x = a.x + b.x;
temp.y = a.y + b.y;
return temp;
}
vector operator-(vector a, vector b)
{
vector temp;
temp.x = a.x - b.x;
temp.y = a.y - b.y;
return temp;
}
vector operator*(vector a, double scalar)
{
vector temp;
temp.x = a.x * scalar;
temp.y = a.y * scalar;
return temp;
}
double operator*(vector a, vector b)
{
return a.x*b.x + a.y*b.y;
}
double abs(vector a)
{
return sqrt(a.x*a.x + a.y*a.y);
}
/*
функция вызывающая ошибку
vector operator%(vector a, vector b)
{
vector Ox(1,0), Oy(0,1);
return Ox*(a.y*b.y) + Oy*(a.x*b.x);
}
*/
main()
{
}
По сути непонятно как потом из ф-ции main вызывать функции класса и передавать значения переменных. Закомментированная функция вызывает ошибку - может где затупил? ну и в алгоритмах может где ляпы... Уже второй день голову ломаю - не могу понять как работают классы.
Ну и вопрос не по теме: нафига вообще эти классы сдались? Можно ведь и так в функции все оформить, а потом обращаться - мне так намного проще было бы, но к сожалению задача на классы.
Используемая среда Devcpp.