Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
ViktorPetrovich
0 / 0 / 1
Регистрация: 03.04.2017
Сообщений: 9
#1

Базовый класс "многоугольник" и производные классы "треугольник" и "прямоугольник" - C++

06.04.2017, 14:48. Просмотров 657. Ответов 13
Метки нет (Все метки)

Не могу понять как реализовать данное задание.

Создать 1 базовый класс и несколько производных.Все небольшие ф-ии сделать встроенными (особенно конструк-
торы). В производных классах определить уникальные функции и/или свойства (свойство – это переменная-член данного
класса). Для всех классов реализовать работу с их объектами (ввод/вывод всех данных). // тут все понятно.

Базовый класс – многоугольник. Производные – треугольник и прямоугольник. // тут не очень

В производных классах допустим функции - нахождение площади или периметра. А вот как сам класс реализовать не понятно. Есть конечно предположение что в классе - цвет, а в производном стороны и площадь, но это как то стремно.
http://www.cyberforum.ru/cpp-beginners/thread2125157.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2017, 14:48
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Базовый класс "многоугольник" и производные классы "треугольник" и "прямоугольник" (C++):

Базовый класс "Источник напряжения", производные классы "Цепь" и "Аккумулятор"
Дали задачу по программированию: составить класс "Источник напряжения", для...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс"
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления"
Помогите с кодом написания задачи, не понимаю как написать классы в классе. ...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года "весна", "лето", "осень", "зима" определить...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую...

13
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
06.04.2017, 16:16 #2
Я вижу эту задачу так. Делаешь родительский класс Многоугольник, а Треугольник и Прямоугольник - это просто будут классы-сыновья и все.
Псевдокод, проверяйте-исправляйте, если есть какие-нибудь ошибки.
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
class Point
{
double x, y;
};
 
class Mnogougolnik
{
public:
int Points;  //Число точек многоугольника
Point *Vertexes;  //Динамический массив вершин много угольника
 
//Конструктор
Mnogougolnik(void)
{
    cout << "Vvedite kolichestvo tochek monogougolnika.";
    cin >> Points;
    Point Vertexes = new Point[Points];
    //Тут нужно заполнить этот массив с консоли или еще откуда-нибудь
}
 
//Деструктор
~Mnogougolnik(void)
{
    delete[] Vertexes;
}
};
 
//Идем дальше, наследуем от Многоугольника классы Треугольник и Прямоугольник
class Triangle: Mnogougolnik: Points(3)  //Так или не так инициализировать переменные, не помню уже:)
{
//Ну и все. Тут будет конструктор с вводом 3-х точек из консоли и все.
}
 
class Rectangle: Mnogougolnik: Points(2) 
{
//А тут будет конструктор с вводом 2-х точек из консоли.
}
Ну и в классах Треугольник и Прямоугольник весь функционал написать: определение периметра, площади и т.д. Также нужно следить чтобы созданные нами переменные не пересекались с системными переменными среды. Т.е. у нас есть Point, я боюсь как бы в C++Builder 6 не оказалось такой же готовой переменной.Что Вы думаете по этому поводу? В какой среде Вы пишете кстати?
1
kaznachei67
27 / 27 / 15
Регистрация: 17.03.2014
Сообщений: 102
06.04.2017, 16:24 #3
Сделайте красиво: абстрактный класс с чистыми виртуальными функциями и чем-нибудь удобоваримым для всех фигур, например цветом, а в потомках - реализация. Полиморфизм во всей красе.
0
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
06.04.2017, 16:26 #4
Кому-нибудь не трудно будет подсказать что тут за ошибка возникает:URL="http://ideone.com/KON2Vr"]http://ideone.com/KON2Vr[/URL]

Сама ошибка:
Ошибка компиляции time: 0 memory: 0 signal:0
prog.cpp: In constructor ‘Mnogougolnik::Mnogougolnik()’:
prog.cpp:21:22: error: conversion from ‘Point*’ to non-scalar type ‘Point’ requested
Point Vertexes = new Point[Points];
^~~~~~~~~~~~~~~~~(стрелочка под буквой n в new)

Т.е. вроде создаю динимаческий массив, что тут такого-то. Вроде ничего нет особенного - пишет ошибка.
0
Даценд
Модератор
Эксперт .NET
4044 / 3884 / 2573
Регистрация: 20.04.2015
Сообщений: 7,060
06.04.2017, 16:38 #5
Цитата Сообщение от DemolitionMan Посмотреть сообщение
вроде создаю динимаческий массив
А где *?
C++
1
Point *Vertexes = new Point[Points];
0
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
06.04.2017, 17:21 #6
Не, звездочка тут не нужна, там других косяков полным-полно. Что-то устал я уже видно. В общем констурктор Mnogougolnik нужно переписать вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Конструктор
Mnogougolnik(void)
{
    cout << "Vvedite kolichestvo tochek monogougolnika.";
    cin >> Points;
    Vertexes = new TPoint[Points];
    
    for(z = 0; z < Points; z++)
    {
        cout << "\nVvedite " << z+1 << " tochku mnogougolnika: x=";
        cin >> Vertexes[z].x;
        cout << "\ny=";
        cin >> Vertexes[z].y;
    }
}
1
MrGluck
Модератор
Эксперт CЭксперт С++
7981 / 4862 / 1423
Регистрация: 29.11.2010
Сообщений: 13,237
06.04.2017, 17:27 #7
Цитата Сообщение от DemolitionMan Посмотреть сообщение
В общем констурктор Mnogougolnik нужно переписать вот так:
Конструктор должен создавать объект по конкретным данным, а не заниматься опросом пользователя транслитерацией.
0
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
06.04.2017, 18:04 #8
А что, в Многоугольнике работает опрос пользователя.
Что-то я не пойму почему в Mnogougolnik работает опрос пользователя, а в классах-сыновьях - не работает?
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
//---------------------------------------------------------------------------
#include <vcl>
#include <iostream>
#include <conio>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
using namespace std;
int z;
 
/*
struct Point
{
double x, y;
};
*/
//Тут заменил на TPoint, который стандартный в C++Builder 6.
 
class Mnogougolnik
{
public:
int Points;  //Число точек многоугольника
TPoint *Vertexes;  //Динамический массив вершин многоугольника
 
//Конструктор
Mnogougolnik(int vp, bool zv/*Zadayetsia Vnutri*/)
{
    cout << "Konstructor: Mnogougolnik.\n";
    if(zv)
    {
        cout << "\nVvedite kolichestvo tochek monogougolnika.";
        cin >> Points;
    }
    else
    {
        vp = Points;
    }
    Vertexes = new TPoint[Points];
 
    //Заполнение массива вершин с консоли
    for(z = 0; z < Points; z++)
    {
        cout << "\nVvedite " << z+1 << " tochku mnogougolnika: x=";
        cin >> Vertexes[z].x;
        cout << "\ny=";
        cin >> Vertexes[z].y;
    }
}
 
//Деструктор
~Mnogougolnik(void)
{
    delete[] Vertexes;
}
};
 
//Классы-наследники Triangle и NRectangle
class Triangle: Mnogougolnik  
{
public:
Triangle(void): Mnogougolnik(3, false)
{
    /*
    cout << "\n\nKonstructor: Triangle.\nVvedite koordinati 3 tochek:";
    for(z = 0; z < Points; z++)
    {
        cout << "\nVvedite " << z+1 << " tochku mnogougolnika: x=";
        cin >> Vertexes[z].x;
        cout << "\ny=";
        cin >> Vertexes[z].y;
    }
    */
}
~Triangle(void)
{}
};
 
class NRectangle: Mnogougolnik
{
public:
NRectangle(void): Mnogougolnik(2, false)
{
    /*
    cout << "\n\nKonstructor: NRectangle.\nVvedite koordinati 2 tochek:";
    for(z = 0; z < Points; z++)
    {
        cout << "\nVvedite " << z+1 << " tochku mnogougolnika: x=";
        cin >> Vertexes[z].x;
        cout << "\ny=";
        cin >> Vertexes[z].y;
    }
    */
}
~NRectangle(void)
{}
};
 
 
Mnogougolnik M1(0, true);
Triangle T1;
NRectangle R1;
 
int main(int argc, char* argv[])
{
getch();
return 0;
}
//---------------------------------------------------------------------------
1
ViktorPetrovich
0 / 0 / 1
Регистрация: 03.04.2017
Сообщений: 9
07.04.2017, 05:17  [ТС] #9
152 строка, я вроде что то упустил. Как S сделать публичным? Странно что на пред идущие не ругается.

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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#include <iostream>
#include <string>
#include "windows.h"
using namespace std;
// Определение базового класса 
class Mnogougolnik {
char color[30];
int status; 
 
public:
Mnogougolnik(){
 strcpy(color,"");
 status=3;
}
char * GetColor()   
{return color;}
int GetStatus()      
{return status;}
void SetColor(char* COLOR)        
{strcpy(color,COLOR);}      
void SetStatus(int STATUS)      
{ if (STATUS==3 || STATUS==4)
     status=STATUS;}
string ShowStatus(int status)  
{ if (status==3)
return "Треугольник";
else return "Прямоугольник";
}
void Show()   //выводит значения всех полей
{cout<<"Многоугольник - > "<<" Цвет: "<<color<<" Количество сторон: "<<status << " Следовательно это - " <<ShowStatus(status)<<"\n";}
};
                
// Определение производного класса 
class TREUGOLNIK : public Mnogougolnik {
int a,b,c,h,s,p;  
public:
STUDENT()   //конструктор без параметров
{
 a=0;
 c=0;
 b=0;
 h=0;
 s=0;
 p=0;
}
 
int GetA()        
{return a;}
int GetB()        
{return b;}
int GetC()       
{return c;}
int GetH()       
{return h;}
void set_a(int A)         
        { a=A;}
void set_b(int B)         
        { b=B;}
void set_c(int C)         
        { c=C;}
void set_h(int H)         
        { h=H;}
        
        
void set_S()              
          {s = (a*h)/2;}
    double Get_S()                
          {return s;}  
void set_P()              
          {p = a+b+c;}
    double Get_P()                
          {return p;}           
          
 
void Show()   //выводит значения всех полей
{cout<<"Многоугольник - > "<<" Цвет: "<< GetColor() <<" Количество сторон: "<<GetStatus() << "\n";
cout<< "Периметр треугольника: " << Get_P() << " Площадь треугольника: " << Get_S() <<"\n";}
 
};
 
class PRYAMOUGOLNIK : public Mnogougolnik{
int a1,b1,p1,s1;
public:
PUPIL()   //конструктор без параметров
{
 a1=0;
 b1=0;
 s1=0;
 p1=0;
}
 
int GetA1()        
{return a1;}
int GetB1()        
{return b1;}
 
void set_a1(int A1)         
        { a1=A1;}
void set_b1(int B1)         
        { b1=B1;}
        
void set_S1()              
          {s1 = a1*b1;}
    double Get_S1()                
          {return s1;}  
void set_P1()              
          {p1 = (a1+b1)*2;}
    double Get_P1()                
          {return p1;}          
          
          
void Show()   //выводит значения всех полей
{cout<<"Многоугольник - > "<<" Цвет: "<< GetColor() <<" Количество сторон: "<<GetStatus() << "\n";
cout<< "Периметр прямоугольника: " << Get_P1() << " Площадь прямоугольника: " << Get_S1() <<"\n";}
};
 
int main (){
 SetConsoleOutputCP(1251);
 SetConsoleCP(1251);
 Mnogougolnik group;
 TREUGOLNIK group1;
 PRYAMOUGOLNIK   group2;
 char color[30];
 int status;
 int a,b,c,h,s,p;
 int a1,b1,p1,s1;
 
 
// базовый класс
  cout<<"Какого цвета многоугольник?  "<<"\n";
  cin>>color;
  group.SetColor(color);
  cout<<"Введите количество сторон:  "<<"\n";
  cin>>status;
  group.SetStatus(status);
cout<<"Данные объектов базового класса:\n";
group.Show();
 
 // наследуемый класс
 
    if (group.GetStatus()==3) {
         group1.SetColor(group.GetColor());    
         cout<<"Введите стороны треугольника\n";
         cout<<"Введите a:\n";
         cin>>a;
         cout<<"Введите b:\n";
         cin>>b;
         cout<<"Введите c:\n";
         cin>>c;
         cout<<"Введите h:\n";
         cin>>h;
         group1.set_S(s);
         group1.set_P(p);
      }
    else {
         group2.SetColor(group.GetColor());
         cout<<"Введите стороны прямоугольника\n";
         cout<<"Введите a:\n";
         cin>>a;
         cout<<"Введите b:\n";
         cin>>b;
         group2.Set_P1(p);
         group2.Set_S1(s);
    }
  
//вывод данных объектов производных классов
cout<<"Данные объектов производных классов:\n";
    group1.Show();
    group2.Show();
system("pause");
 
return 0; }
0
obivan
Падаван С++
419 / 239 / 82
Регистрация: 11.11.2014
Сообщений: 842
Завершенные тесты: 2
07.04.2017, 06:43 #10
Цитата Сообщение от ViktorPetrovich Посмотреть сообщение
C++
1
void set_S()  {s = (a*h)/2;}
оно в паблике и находится но не принимает аргументов, а вызов у вас а аргументами
C++
1
group1.set_S(s);
Добавлено через 1 минуту
P.S если вы в вижуал студии отфарматируйте код, сочетания клавиш, ctrl+a (выделить все) и потом последовательно
ctrl + K, ctrl + F (форматирование)

Добавлено через 4 минуты
Потом, почему у вас конструкторы названы отличными именами от имени класса, так делать нельзя, поправить строки
C++
1
STUDENT()
на

C++
1
TREUGOLNIK()
и

C++
1
PUPIL()
на

C++
1
PRYAMOUGOLNIK()
Добавлено через 1 минуту
вот эти методы у вас вообще не объявлены тоже поправляйте на то, что вам нужно
C++
1
2
group2.Set_P1(p);
group2.Set_S1(s);
1
zss
Модератор
Эксперт С++
6953 / 6515 / 4136
Регистрация: 18.12.2011
Сообщений: 17,184
Завершенные тесты: 1
07.04.2017, 07:28 #11
Цитата Сообщение от ViktorPetrovich Посмотреть сообщение
C++
1
2
{ if (status==3) 
return "Треугольник";
логическая ошибка проектирования объекта.
базовый класс не знает структуру наследника.
для этого есть полиморфизм.
метод Show должен быть виртуальным.
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
#include <iostream>
#include <string>
#include <cmath>
#include <windows.h>
using namespace std;
// Определение базового класса 
class Mnogougolnik {
protected:
    string color;
    int status; 
public:
    Mnogougolnik():color("black"),status(0){}
    Mnogougolnik(string c,int s):color(c),status(s){}
    //string GetColor(){ return color; }
    //int GetStatus(){ return status; }
    //void SetColor(string COLOR){ color=COLOR; }      
    //void SetStatus(int STATUS){ status=STATUS; }
    virtual string StatusName(){ return "Unknown"; } 
    void Show()   //выводит значения всех полей
    {
        cout<<"Многоугольник - >"<<StatusName()<<" Цвет: "<< color <<" Количество сторон: "<<status << "\n";
        cout<< "Периметр: " << Get_P() << " Площадь: " << Get_S() <<"\n";
    }
    virtual double Get_P(){return 0;}
    virtual double Get_S(){return 0;}
 
};
 
// Определение производного класса 
class TREUGOLNIK : public Mnogougolnik {
    double a,b,c;  
public:
    string StatusName()  
    { return "Треугольник";}
    TREUGOLNIK():Mnogougolnik()   //конструктор без параметров
    {
        a=0;
        c=0;
        b=0;
    }
    TREUGOLNIK(string s,double A,double B,double C):Mnogougolnik(s,3) 
    {
        a=A;
        c=C;
        b=B;
    }
 
    double Get_S()              
    {
        double p=(a+b+c)/2.;
        return sqrt(p*(p-a)*(p-b)*(p-c));
    }
    double Get_P()                
    {
        return a+b+c;
    }           
};
 
class PRYAMOUGOLNIK : public Mnogougolnik{
    double a,b;
public:
    string StatusName()  
    { return "Прямоугольник";}
    PRYAMOUGOLNIK():Mnogougolnik()   //конструктор без параметров
    {
        a=0;
        b=0;
    }
    PRYAMOUGOLNIK(string s,double A,double B):Mnogougolnik(s,4) 
    {
        a=A;
        b=B;
    }
 
    double Get_S()                
    {
        return a*b;
    }  
    double Get_P()                
    {
        return (a+b)*2.0;
    }          
};
 
int main (){
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    Mnogougolnik* pm;
    string color; 
    int status; 
    // базовый класс
    cout<<"Какого цвета многоугольник?  "<<"\n";
    cin>>color;
    cout<<"Введите количество сторон:  "<<"\n";
    cin>>status;
    cout<<"Данные объектов базового класса:\n";
    Mnogougolnik group(color,status);
    pm=&group;
    pm->Show();
 
    // наследуемый класс
    double a,b,c;
    cout<<"Какого цвета треугольник?  "<<"\n";
    cin>>color;
    cout<<"Введите стороны треугольника\n";
    cout<<"Введите a:\n";
    cin>>a;
    cout<<"Введите b:\n";
    cin>>b;
    cout<<"Введите c:\n";
    cin>>c;
    TREUGOLNIK group1(color,a,b,c);
    pm=&group1;
    pm->Show();
 
    // наследуемый класс
    cout<<"Какого цвета прямоугольник?  "<<"\n";
    cin>>color;
    cout<<"Введите стороны прямоугольника\n";
    cout<<"Введите a:\n";
    cin>>a;
    cout<<"Введите b:\n";
    cin>>b;
    PRYAMOUGOLNIK group2(color,a,b);
    pm=&group2;
    pm->Show();
    system("pause");
 
    return 0; 
}
1
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
07.04.2017, 12:25 #12
Лучший ответ Сообщение было отмечено ViktorPetrovich как решение

Решение

Во я как сделал! Уха-ха-ха!!!!!!! Я лучший!!!!!!!!!!!!!!!!!!!
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
144
145
146
147
148
//---------------------------------------------------------------------------
#include <vcl>
#include <iostream>
#include <conio>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
using namespace std;
int z;
 
/*
struct Point
{
double x, y;
};
TPoint
*/
 
class Mnogougolnik
{
public:
int Points;  //×èñëî òî÷åê Г¬Г*îãîóãîëüГ*ГЁГЄГ*
TPoint *Vertexes;  //ÄèГ*Г*ìè÷åñêèé Г¬Г*Г±Г±ГЁГў âåðøèГ* Г¬Г*îãîóãîëüГ*ГЁГЄГ*
 
Mnogougolnik(int KV/*Kolichestvo vershin*/,
             TPoint *IA)
{
Points = KV;
Vertexes = IA;
}
 
~Mnogougolnik(void)
{
    delete[] Vertexes;
}
};
//=======================Mnogougolnik========================================
 
 
class Triangle:public Mnogougolnik  
{
public:
Triangle(TPoint *VU): Mnogougolnik(3, VU)
{
}
~Triangle(void)
{}
};
 
class NRectangle:public Mnogougolnik
{
public:
NRectangle(TPoint *VU): Mnogougolnik(2, VU)
{}
~NRectangle(void)
{}
};
 
 
int main(int argc, char* argv[])
{
int V;
TPoint *Massiv;
//===========================Mnogougolnik====================================
cout << "Konstruiruem Mnogoulnik. Vvdedite kolichestvo vershin:";
cin >> V;
 
Massiv = new TPoint[V];
cout << "\nNabivaem vremennii Massiv vershinami.\n\n";
cout << "Vvedite koordinati " << V << " tochek:";
for(z = 0; z < V; z++)
{
    cout << "\nVvedite " << z+1 << " tochku mnogougolnika:\nx=";
    cin >> Massiv[z].x;
    cout << "\ny=";
    cin >> Massiv[z].y;
}
Mnogougolnik M1(V, Massiv);
//Triangle T1;
//NRectangle R1;
 
cout << "\n\nPechataem dannie:\n\n";
cout << "Vertexes: " << V << "\n";
for(z = 0; z < V; z++)
{
    cout << "\nVertex " << z+1 << ":\n";
    cout << "x=" << M1.Vertexes[z].x << "\n";
    cout << "y=" << M1.Vertexes[z].y << "\n";
}
 
 
//===========================Treugolnik====================================
V = 3;
delete[] Massiv;
Massiv = new TPoint[V];
cout << "\nNabivaem vremennii Massiv vershinami.\n\n";
cout << "Vvedite koordinati " << V << " tochek:";
for(z = 0; z < V; z++)
{
    cout << "\nVvedite " << z+1 << " tochku mnogougolnika:\nx=";
    cin >> Massiv[z].x;
    cout << "\ny=";
    cin >> Massiv[z].y;
}
Triangle T1(Massiv);
 
cout << "\n\n=================================\n";
cout << "\n\nPechataem dannie:\n\n";
cout << "Vertexes: " << V << "\n";
for(z = 0; z < V; z++)
{
    cout << "\nVertex " << z+1 << ":\n";
    cout << "x=" << T1.Vertexes[z].x << "\n";
    cout << "y=" << T1.Vertexes[z].y << "\n";
}
 
 
 
 
//===========================Rectangle====================================
V = 2;
delete[] Massiv;
Massiv = new TPoint[V];
cout << "\nNabivaem vremennii Massiv vershinami.\n\n";
cout << "Vvedite koordinati " << V << " tochek:";
for(z = 0; z < V; z++)
{
    cout << "\nVvedite " << z+1 << " tochku mnogougolnika:\nx=";
    cin >> Massiv[z].x;
    cout << "\ny=";
    cin >> Massiv[z].y;
}
NRectangle R1(Massiv);
 
cout << "\n\n=================================\n";
cout << "\n\nPechataem dannie:\n\n";
cout << "Vertexes: " << V << "\n";
for(z = 0; z < V; z++)
{
    cout << "\nVertex " << z+1 << ":\n";
    cout << "x=" << R1.Vertexes[z].x << "\n";
    cout << "y=" << R1.Vertexes[z].y << "\n";
}
getch();
delete[] Massiv;
return 0;
}
//---------------------------------------------------------------------------
Работает!
Заточено под C++Builder 6, если что.
В конструкторах тепереь ничего не спришвает, работа с консолью только в main().

Добавлено через 3 минуты
Плохо, что русские буквы тут не печатает. Если что тут написано вот это:
C++
1
2
3
4
5
class Mnogougolnik
{
public:
int Points;  //Число точек многоугольника
TPoint *Vertexes;  //Указатель на динамический массив вершин многоугольника
Добавлено через 39 минут
Цитата Сообщение от MrGluck Посмотреть сообщение
Конструктор должен создавать объект по конкретным данным, а не заниматься опросом пользователя транслитерацией.
- MrGluck, а можете ответить на вопрос почему в базовом классе есть работа с консолью, а в детях нет?
1
MrGluck
Модератор
Эксперт CЭксперт С++
7981 / 4862 / 1423
Регистрация: 29.11.2010
Сообщений: 13,237
07.04.2017, 12:28 #13
Цитата Сообщение от DemolitionMan Посмотреть сообщение
MrGluck, а можете ответить на вопрос почему в базовом классе есть работа с консолью, а в детях нет?
Потому что дети были точно так же хренового спроектированы. Не должно быть в конструкторе операций ввода/вывода, как у вас. Ни в каких классах, а не только в производных.
1
zss
Модератор
Эксперт С++
6953 / 6515 / 4136
Регистрация: 18.12.2011
Сообщений: 17,184
Завершенные тесты: 1
09.04.2017, 21:38 #14
Цитата Сообщение от DemolitionMan Посмотреть сообщение
Vertexes = IA;
Нельзя указателем адресовывать внешние данные.
Нужно выделить память и их скопировать!!!!

И правило трех еще никто не отменял!!!!
http://www.cyberforum.ru/cpp-beginne...ml#post6679898
0
09.04.2017, 21:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2017, 21:38
Привет! Вот еще темы с решениями:

Класс "Графический объект", от которого будут наследоваться классы "круг" и "квадрат"
Реализовать класс Графический объект от которого будут наследоваться классы...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания"
Создать класс Книга поля: название книги,количество страниц,год издания...

Базовый класс "Летательный аппарат" и производные классы Ракета и Самолет
Определить абстрактный базовый класс &quot;Летательный аппарат&quot; содержащий данные,...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов),...


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

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

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