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

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

Войти
Регистрация
Восстановить пароль
 
Eugen-S
8 / 8 / 0
Регистрация: 06.11.2011
Сообщений: 122
#1

Не выходит перегрузка << и >> - C++

12.01.2013, 21:09. Просмотров 306. Ответов 4
Метки нет (Все метки)

Добрый день формучане. Сперва хотелось бы попросить проверить правильность выполнения задания:

Разработать абстрактный класс "правильный многоугольник".
Разработать наследуемые классы "прав. треугольник", "квадрат" , "прав. 5тиугольник".
Создать неоднородный дин. массив обьектов классов. Вычислить площадь. Перегрузить << и >>;

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
136
137
138
139
#include <iostream>
#include <clocale>
 
using namespace std;
 
 
class RightFigure
{
public:
     virtual float sq() = 0;
};
 
class Triangle: public RightFigure
{
    float x;
public:
    Triangle()
    {
        x = 1;
    };
 
    Triangle(float j)
    {
        x = j;
    };  
 
    Triangle(const Triangle& ob)
    {
        x = ob.getX();
    };
 
    float getX() const
    {
        return x;
    };
    
    float sq()
    {
        return ((sqrt(3)*x*x)/4);
    };
 
};
 
class Square: public RightFigure
{
    float x;
public:
    
    Square()
    {
        x = 1;
    };
 
    Square(float j)
    {
        x = j;
    };
 
    Square(const Square& ob)
    {
        x = ob.getX();
    };
 
    float getX() const
    {
        return x;
    };
 
    float sq()
    {
        return x*x;
    };
 
};
 
class Angl : public RightFigure
{
    float x;
public:
 
    Angl()
    {
        x = 1;
    };
 
    Angl(float j)
    {
        x = j;
    };
 
    Angl(const Angl& ob)
    {
        x = ob.getX();
    };
 
    float getX() const
    {
        return x;
    };
 
    float sq()
    {
        return (((sqrt(5)*sqrt(5+2*sqrt(5)) )/4 ) * (x*x));
    };
 
};
 
 
void main()
{
    setlocale(LC_ALL,".1251");
 
    int j=0,k=0;
 
    cout<<"Сколько фигур вы хотите создать? (размеры массива)"<<endl;
    cin>>j;
 
    RightFigure ** arr = new RightFigure * [j];
 
    for(int i=0; i<j; i++)
    {
        cout<<"Выберите тип "<<i+1<<" фигуры:"<<endl;
        cout<<" 1.Треугольник; 2.Квадрат; 3.5тиугольник; "<<endl;
        cin>>k;
        switch(k)
        {
            case 1: arr[i] = new Triangle; break;
            case 2: arr[i] = new Square;   break;
            case 3: arr[i] = new Angl;     break;
        }
 
    };
 
    for(int i=0; i<j; i++)
    {
        cout <<"Площадь: "<< arr[i]->sq() << endl;
    };
 
};
Вроде как всё работает и всё правильно, но как перегрузить << например, чтоб в последнем цикле это использовать - не получается и всё. Подскажите всё ли верно сделал (по поводу наследования и абстрактного класса) и подскажите, если можно с перегрузкой. (книгу смотрел, по примеру - не вышло) (( Заранее благодарю!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2013, 21:09     Не выходит перегрузка << и >>
Посмотрите здесь:

Не выходит перегрузка операторов - C++
Класс матрица, перегруженные др. операции. Ошибок не выдает. Через дебаг проверил, не заносятся значения в массивы. Может я что-то с...

Перегрузка в виде метода VS Перегрузка в виде функции друг - C++
Привет! Собственно сабж: В каких случаях используется перегрузка в виде метода, а когда в виде функции друг? Добавлено через 4...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

Не выходит из функции - C++
Здравствуйте. В конце функции есть строка return true; При вызове этой функции программа зацикливается. То есть если поставить точку...

Не выходит из цикла while - C++
почему при нажатии (-1) не выходит из цикла? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;locale&gt; #include &lt;iomanip&gt; ...

не выходит решение на С++ - C++
1) В массиве хранятся сведения о количестве осадков за каждый день сентября. Опре-делить: а) за какой период выпало больше осадков: в...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UserAK
73 / 73 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
12.01.2013, 22:44     Не выходит перегрузка << и >> #2
C++
1
friend std::ostream &operator<<(std::ostream &os, Square &square)
Eugen-S
8 / 8 / 0
Регистрация: 06.11.2011
Сообщений: 122
12.01.2013, 22:48  [ТС]     Не выходит перегрузка << и >> #3
пробовал.. не шло..
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
12.01.2013, 22:53     Не выходит перегрузка << и >> #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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream>
#include <clocale>
#include <math.h>
 
using namespace std;
 
 
class RightFigure
{
   friend ostream& operator << (ostream& os, const RightFigure& f)
   {
      return (os << f.sq());
   }
public:
     virtual float sq() const = 0;
};
 
class Triangle: public RightFigure
{
    float x;
public:
    Triangle()
    {
        x = 1;
    };
 
    Triangle(float j)
    {
        x = j;
    };  
 
    Triangle(const Triangle& ob)
    {
        x = ob.getX();
    };
 
    float getX() const
    {
        return x;
    };
    
    float sq() const
    {
        return ((sqrt(3)*x*x)/4);
    };
 
};
 
class Square: public RightFigure
{
    float x;
public:
    
    Square()
    {
        x = 1;
    };
 
    Square(float j)
    {
        x = j;
    };
 
    Square(const Square& ob)
    {
        x = ob.getX();
    };
 
    float getX() const
    {
        return x;
    };
 
    float sq() const
    {
        return x*x;
    };
 
};
 
class Angl : public RightFigure
{
    float x;
public:
 
    Angl()
    {
        x = 1;
    };
 
    Angl(float j)
    {
        x = j;
    };
 
    Angl(const Angl& ob)
    {
        x = ob.getX();
    };
 
    float getX() const
    {
        return x;
    };
 
    float sq() const 
    {
        return (((sqrt(5)*sqrt(5+2*sqrt(5)) )/4 ) * (x*x));
    };
 
};
 
 
int main()
{
 
 
    int j=0,k=0;
 
    cout<<"Сколько фигур вы хотите создать? (размеры массива)"<<endl;
    cin>>j;
 
    RightFigure ** arr = new RightFigure * [j];
 
    for(int i=0; i<j; i++)
    {
        cout<<"Выберите тип "<<i+1<<" фигуры:"<<endl;
        cout<<" 1.Треугольник; 2.Квадрат; 3.5тиугольник; "<<endl;
        cin>>k;
        switch(k)
        {
            case 1: arr[i] = new Triangle; break;
            case 2: arr[i] = new Square;   break;
            case 3: arr[i] = new Angl;     break;
        }
 
    }
 
    for(int i=0; i<j; i++)
    {
        cout <<"Площадь: "<< *arr[i] << endl;
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2013, 22:59     Не выходит перегрузка << и >>
Еще ссылки по теме:

Не выходит из цикла - C++
Хотел написать простой код для считывания введенный в консоль через пробел чисел в вектор, но что-то пошло не так: читать читает, заносит,...

не выходит решение на С++ - C++
Помогите с решением следующих задачек на С++ (с использованием классов) 1 Дано слово. Получить и вывести на экран буквосочетание...

Не выходит из цикла - C++
не понимаю почему при значениях c,t,p,g не выходит из цикла. После ввода значения проверочное выражение получает false и дальше идет...

Не выходит из цикла - C++
Доброго времени суток! При нажатии цифры &quot;1&quot;, а затем последовательно &quot;2&quot; z должно суммировать результат кейсов и выводить программу из...


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

Или воспользуйтесь поиском по форуму:
Eugen-S
8 / 8 / 0
Регистрация: 06.11.2011
Сообщений: 122
12.01.2013, 22:59  [ТС]     Не выходит перегрузка << и >> #5
не там делал( эх... щас проверю))

Добавлено через 1 минуту
Готово! Спасибо большое!!
Yandex
Объявления
12.01.2013, 22:59     Не выходит перегрузка << и >>
Ответ Создать тему
Опции темы

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