Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Villya
0 / 0 / 0
Регистрация: 12.06.2010
Сообщений: 32
#1

Как совместить код, реализующий методы и перегружаемые операции - C++

11.04.2011, 23:14. Просмотров 1225. Ответов 4
Метки нет (Все метки)

Есть такое задание:::
Разработать класс «Вектор» – Vektor размерности n . Определить несколько конструкторов, в том числе конструктор копирования. Реализовать методы для вычисления модуля вектора, скалярного произведения, сложения, вычитания, умножения на константу. Перегрузить операции сложения, вычитания, умножения, инкремента, декремента, индексирования, присваивания для данного класса

Я реализовал класс Vektor, определить несколько конструкторов, реализовать методы для вычисления модуля вектора, скалярного произведения, сложения, вычитания, умножения на константу
Код рабочий
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include "stdafx.h"
#include <iostream>
#include <math.h>
const int N=10;
using namespace std;
class Vektor {
        float a1, a2, b1, b2; // значения координат
public:
    Vektor::Vektor(float i,float j, float k, float m)
    {a1 = i; a2 = j; b1 = k; b2 = m;}
double Modul();
    float SkalyarProizv();
    float Sloshenie1();
    float Sloshenie2();
    float Vuchitenie1();
    float Vuchitenie2();
    float UmnoshenieNaConstanty1();
    float UmnoshenieNaConstanty2();
}
double Vektor::Modul()
{return sqrt(a1*a1-b1*b1+a2*a2-b2*b2);}
float Vektor::SkalyarProizv()
{return a1*b1+a2*b2;}
float Vektor::Sloshenie1()
{return a1+b1;}
float Vektor::Sloshenie2()
{return a2+b2;}
float Vektor::Vuchitenie1()
{return a1-b1;}
float Vektor::Vuchitenie2()
{return a2-b2;}
float Vektor::UmnoshenieNaConstanty1()
{return N*(a1*b1);}
float Vektor::UmnoshenieNaConstanty2()
{return N*(a2*b2);}
void main ()
{float V1,V2,F1,F2;
cin>>V1>>V2>>F1>>F2;
Vektor VV(V1,V2,F1,F2);
cout<<"Вычисление модуля вектора:="<<VV.Modul()<<endl;
cout<<"Вычисление скалярного произведения вектора:="<<VV.SkalyarProizv()<<endl;
cout<<"Сложение векторов:="<<VV.Sloshenie1()<<","<<VV.Sloshenie2()<<endl;
cout<<"Вычитание векторов:="<<VV.Vuchitenie1()<<","<<VV.Vuchitenie2()<<endl;
cout<<"Умножение векторов на константу:="<<VV.UmnoshenieNaConstanty1()<<","<<VV.UmnoshenieNaConstanty2()<<endl;
}
 
[size="1"][color="grey"][I]Добавлено через 8 минут[/I][/color][/size]
Также перегрузил операции кроме индексирования
Vektor operator+(Vektor ob2);
    Vektor operator-(Vektor ob2);
    Vektor operator*(Vektor ob2);
    Vektor operator++(Vektor ob2);
    Vektor operator--(Vektor ob2);
    Vektor operator=(Vektor ob2);
};
// Перегрузка оператора + относительно класса coord
Vektor Vektor::operator+(Vektor ob2)
{
    Vektor temp;
 
    temp.a1 = a1 + ob2.b1;
    temp.a2 = a2 + ob2.b2;
    return temp;
}
 
// Перегрузка оператора - относительно класса coord
Vektor Vektor::operator-(Vektor ob2)
{
    Vektor temp;
    temp.a1 = a1 - ob2.b1;
    temp.a2 = a2 - ob2.b2;
    return temp;
}
// Перегрузка оператора - относительно класса coord
Vektor Vektor::operator*(Vektor ob2)
{
    Vektor temp;
    temp.a1 = a1 * ob2.b1;
    temp.a2 = a2 * ob2.b2;
    return temp;
}
// Перегрузка оператора - относительно класса coord
Vektor Vektor::operator++(Vektor ob2)
{
    Vektor temp;
    temp.a1 = ++;
    temp.a2 = ++;
    temp.b1 = ++;
    temp.b2 = ++;
    return temp;
}
// Перегрузка оператора - относительно класса coord
Vektor Vektor::operator*(Vektor ob2)
{
    Vektor temp;
    temp.a1 = --;
    temp.a2 = --;
    temp.b1 = --;
    temp.b2 = --;
    return temp;
}
// Перегрузка оператора = относительно класса coord
Vektor Vektor::operator=(Vektor ob2)
{
    Vektor temp;
    temp.a1 = b1;
    temp.a2 = b2;
    return temp; // возвращение объекта, которому присвоено значение
}
 
Вот помогите мне включить их в [U]void main[/U]
Также существует ошибка в ++ и --
я наверно, что не так сделал
 
[size="1"][color="grey"][I]Добавлено через 3 минуты[/I][/color][/size]
#include "stdafx.h"
#include <iostream>
в первом коде забыл поставить ;
#include <math.h>
const int N=10;
using namespace std;
class Vektor {
float a1, a2, b1, b2; // значения координат
public:
Vektor::Vektor(float i,float j, float k, float m)
{a1 = i; a2 = j; b1 = k; b2 = m;}
double Modul();
float SkalyarProizv();
float Sloshenie1();
float Sloshenie2();
float Vuchitenie1();
float Vuchitenie2();
float UmnoshenieNaConstanty1();
float UmnoshenieNaConstanty2();
};
Добавлено через 20 часов 47 минут
как перегрузить 1 операцию и 1 метод, и вывести в Void main
Покажите пример, пожалуйста

Добавлено через 6 часов 29 минут
Хто-небудь помогите с задачей.



ПОМОЩЬ НЕ ЗНАЧИТ РЕШИТЬ ВСЕ, а ПРОСТО ПРИВЕДИТЕ ПРИМЕР КУСОЧЕК(1 МЕТОД + 1 ОПЕРАЦИЯ И ВЫВОД ИХ В VOID MAIN ИЛИ INT MAIN)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2011, 23:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как совместить код, реализующий методы и перегружаемые операции (C++):

Опишите абстрактный базовый класс "строка",реализующий методы ввода-вывода строки - C++
Кто поможет,тому магарыч. Опишите абстрактный базовый класс &quot;строка&quot;,реализующий методы ввода-вывода строки. Производный класс дает свою...

Исправить код, реализующий алгоритм сортировки - C++
Доброе утро. Сделал попытку реализовать функцию сортировки простым двухпутевым слиянием, но не вышло. При запуске происходит ошибка,...

Написать код, реализующий поиск в матрице значения, заданного пользователем - C++
Дана матрица. Нужен цикл, ищущий местоположение элементов, совпадающих с введенным

Задачка на классы (Создать методы, выполняющие поразрядные операции) - C++
Не смог сам разобраться.. Класс, хранящий 8 бит информации – байт флагов b1. Создать методы, выполняющие поразрядное отрицание &quot;~&quot;...

Перегружаемые функции - C++
Помогите привести в рабочее состояние, а то хз че - не компилиться((( Надо создать 3 перегружаемые функции, которые выделяют память в куче...

перегружаемые функции - C++
Есть задание для массивов типа int и double: 1. найти сумму положительных элементов массива 2. произведение элементов, находящихся между...

4
CEBEP
107 / 107 / 9
Регистрация: 21.03.2010
Сообщений: 444
11.04.2011, 23:41 #2
а я не пойму, в задании речь об n-мерном, а у вас - четырёх))

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
Vektor Vektor::operator*(Vektor ob2)
{
    Vektor temp;
        temp.a1 = --;
        temp.a2 = --;
        temp.b1 = --;
        temp.b2 = --;
    return temp;
}
просто убило... что это?
0
Villya
0 / 0 / 0
Регистрация: 12.06.2010
Сообщений: 32
12.04.2011, 00:47  [ТС] #3
соглашусь с вами, я немного переборщил

Vektor Vektor::operator*(Vektor ob2)
{
Vektor temp;
temp.ob2 = --;
return temp;
}

Вот такой хм, вариант да?
0
CEBEP
107 / 107 / 9
Регистрация: 21.03.2010
Сообщений: 444
12.04.2011, 00:50 #4
да что это значит то вообще? у вас .ob2 объявлён в private, слева от равенства дикрепент, который не понятно что значит вообще. чем это компилируется? что это вообще? всё в разброс, непонятно как разогнано не понятно зачем...
1
Villya
0 / 0 / 0
Регистрация: 12.06.2010
Сообщений: 32
12.04.2011, 01:07  [ТС] #5
Допустим , хочу перегрузить, используя float, которое используя в void main
Vektor Vektor::operator*(float)
{
Vektor temp;
temp--;
return temp;
}
Значит необходим соотвествующий конструктор, не так ли?

Добавлено через 1 минуту
Sorry
Допустим , хочу перегрузить, используя float, которое используя в void main
Vektor Vektor::operator--(float)
{
Vektor temp;
temp--;
return temp;
}
Значит необходим соотвествующий конструктор, не так ли?

Добавлено через 2 минуты
Вот вариант наиболее логичный для использования, так как float нельзя использовать(вырыл в инете) надо int
Vektor Vektor::operator--(int)
{
Vektor temp;
temp--;
return temp;
}
0
12.04.2011, 01:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2011, 01:07
Привет! Вот еще темы с ответами:

Перегружаемые функции - C++
помогите с программой, и если с можете поясните сами функции, а то совсем в них запуталась, сколько не читала теории. а понять не могу ...

можно ли делать виртуальными перегружаемые операторы? - C++
например так: virtual a&amp; a::operator=(a&amp; b);

Написать перегружаемые функции умножения разного количества параметров - C++
Помогите пожалуйста с задачей ничего не понимаю: Написать перегружаемые функции умножения разного количества параметров: 2,3,4. При...

Как совместить wxWidgets 3.0.2 и MVS 2013 Ultimate - C++
Здравствуйте! Подскажите пожалуйста, как совместить wxWidgets 3.0.2 с MVS 2013 Ultimate для написание оконных программ, и стоит ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru