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

Перегрузка операторов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Прочитать из файла массив, отсортировать, результат вывести на экран. http://www.cyberforum.ru/cpp-beginners/thread290903.html
Разработать приложение, выполняющее следующие функции. Прочитать из файла массив строк символов. Отсортировать массив в лексикографическом порядке (по алфавиту) (методом выбора). Результат вывести на экран и записать в файл. (Язык С)
C++ считать Полиномиал ньютона данная таблицей на точке x=3 c++ i 012 xi 234 f(xi)352 считать Полиномиал ньютона данная таблицей на точке x=3 c++ i 012 xi 234 f(xi)352 http://www.cyberforum.ru/cpp-beginners/thread290892.html
C++ считать Полиномиал ньютона данная таблицей на точке x=3 c++
считать Полиномиал ньютона данная таблицей на точке x=3 c++ i 0 1 2 xi 2 3 4 f(xi)3 5 2
C++ Как разбить строку по нескольким делиметрам
есть строка char *a = "123497, 56783; 09872!, 65443; ;221345, 623789 "; разделители char keys = ", !;."; нужно выделить слова как проще сделать? есть функция strcspn которая ищет любой символ и строки keys например. но разделителей подряд может быть сколько угодно, что с этим делать? заранее спасибо
C++ Конвертация в KOI-7 http://www.cyberforum.ru/cpp-beginners/thread290865.html
Здравствуйте! Вопрос: Нужно программно конвертировать обычный текстовый файл в двоичный файл с КОИ-7 кодировкой. Алгоритм: Перевести символы в 16-чный код согласно КОИ-7 16-ый код конвертировать в бинарный,(пример :7F(HEX)=1111111(BIN) ) Вопрос: правильно ли я рассуждаю?
C++ Перевод строки CString в массив чисел Здравствуйте. Имеется строка CString вида S1S2S3S12S12S0S10S То есть символы S чередуются с цифрами от 0 до 15. Нужно все эти цифры вставить в массив. Делаю вот так: index_str - сама строка CString, index - массив int. int b = 1; int k = 0; for (int i = 1; i != 150; i++) { if (index_str == 'S') { CString s; s.Mid(b, i-b); подробнее

Показать сообщение отдельно
delete1991
 Аватар для delete1991
2 / 2 / 0
Регистрация: 05.02.2011
Сообщений: 82
08.05.2011, 02:03     Перегрузка операторов
вот есть такое задание
Для заданного по варианту класса выполнить следующие действия:
1) описать все типы конструкторов и деструктор (по необходимости);
2) переопределить оператор вывода в поток <<;
3) переопределить оператор ввода из потока >>;
4) переопределить заданные по варианту операторы;
5) предусмотреть обработку ошибок.
Создать два объекта заданного по варианту класса и на их примере продемонстрировать корректную работу всех перегруженных операторов.

Вариант №7
Создать класс треугольник Triangle (хранит стороны a, b, c). Перегрузить операторы:
1) + как унарный метод класса, вычисляющий периметр треугольника;
2) ! как унарную дружественную функцию, проверяющую возможность существования заданного треугольника (ни одна из сторон не может быть равной сумме двух других сторон или превышать ее);
3) <= как бинарный метод класса, сравнивающий длины периметров двух треугольников;
4) == как бинарную дружественную функцию, проверяющую равенство сторон треугольников.

я эт задание реализовал вот спомощью такого кода
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
//---------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>
#pragma hdrstop
#pragma argsused
class Triangle {
private:
        int a,b,c;
public:
        Triangle(int a1, int b1, int c1);
        int operator +();   //периметр треугольника
        bool operator <=(Triangle&);
        bool operator==(Triangle&);
        friend bool operator !(Triangle &t);
        friend istream& operator>>(istream&,Triangle&);
        friend ostream& operator<<(ostream&,Triangle&);
 
};
Triangle::Triangle(int a1=1, int b1=1, int c1=1): a(a1), b(b1), c(c1) {};   //конструктор
int input_errors(); //функция проверку на ошибку ввода переменной
 
int input_errors() {
int x;
while(1) {
        cin>>x;
        if (cin.fail()) {
                cout<<"ERROR!!!"<<endl;
                cout<<"Enter the number of integer: ";
                cin.clear();
                cin.ignore();
        } else break;
};
return x;
};
 
 
//-------------описание класса--------------
 
int Triangle::operator +() {
return a+b+c;
};
 
bool Triangle::operator <=(Triangle& tr) {
return +(*this)<=+tr;
};
 
bool Triangle::operator ==(Triangle &tr)
{
bool f=false;
if ((a==tr.a) && (b==tr.b) && (c==tr.c))
        f=true;
return f;
}
 
istream& operator>>(istream& in, Triangle &tr) {
cout<<"a=";
tr.a=input_errors();
cout<<"b=";
tr.b=input_errors();
cout<<"c=";
tr.c=input_errors();
return in;
};
 
ostream& operator<<(ostream& out, Triangle &tr) {
out<<"a="<<tr.a<<endl;
out<<"b="<<tr.b<<endl;
out<<"c="<<tr.c<<endl;
return out;
};
//------------описание дружественной функции----------------------
bool operator !(Triangle &t) {
bool f=false;
f=t.a<t.b+t.c;
f&=t.b<t.a+t.c;
f&=t.c<t.a+t.b;
if ((t.a<t.b+t.c) && (t.b<t.a+t.c) && (t.c<t.a+t.b))
        f=true;
return f;
};
 
int main(int argc, char* argv[])
{
Triangle t1,t2;
cout<<"Enter the side of the triangle 1"<<endl;
cin>>t1;
cout<<"Enter the side of the triangle 2"<<endl;
cin>>t2;
cout<<endl<<"The perimeter of the triangle 1="<<+t1<<endl;
cout<<"The perimeter of the triangle 2="<<+t2<<endl;
if (!t1)
        cout<<"There is a triangle 1";
else
        cout<<"Triangle 1 does not exist";
cout<<endl;
if (!t2)
        cout<<"There is a triangle 2";
else
        cout<<"Triangle 2 does not exist";
cout<<endl;
if (t1<=t2)
        cout<<"t1<=t2";
else
        cout<<"t1>=t2";
cout<<endl;
if (t1==t2)
        cout<<"Storony ravny";
else
        cout<<"Storony ne ravny";
getch();
        return 0;
}
//---------------------------------------------------------------------------
мне нужно дописать к ней два задания:
1) унарного способа перегрузки операторов. Если а=0, то тогда вывести сообщения (а относится к 1 объекту (t1))
2) бинарный способ перегрузки. Найти сумму а1+а2, т.е а первого треугольника(t1), и а второго треугольника(t2)

я не очень разобрался с перегрузками, плиз спасите неуча
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru