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

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

Войти
Регистрация
Восстановить пароль
 
bmp22
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 69
#1

Необходимо понять код - C++

08.05.2017, 15:02. Просмотров 155. Ответов 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
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
#include <iostream>
using namespace std;
 
 
class Shape
{
    public:
        Shape(){}
        ~Shape(){}
        virtual long GetArea() = 0;
        virtual long GetPerim() = 0;
        virtual void Draw() = 0;
    private:
};
 
class Circle:public Shape
{
    private:
        int itsRadius;
 
    public:
        Circle(int radius):itsRadius(radius){}
        ~Circle(){}
        long GetArea(){return 3*itsRadius*itsRadius;}//???
        long GetPerim() {return 6*itsRadius;} //???
        virtual void Draw();
    
};
 
void Circle::Draw ()
{
    cout << "Izobrazen obect klassa Circle! \n";
}
 
class Rectangle:public Shape
{
    private:
        int itsWidth;
        int itsLength;
    public:
        Rectangle(int len, int width)
            :itsLength(len), itsWidth(width){}
        ~Rectangle(){}
         long GetArea(){return itsLength*itsWidth;}
         long GetPerim() {return 2*itsLength + 2*itsWidth;} 
         int GetLength(){return itsLength;}
         int GetWidth(){return itsWidth;}
         void Draw();
};
 
 
void Rectangle::Draw ()
{
    if (GetLength() != GetWidth())
     cout << "Izobrazen obect klassa Rectangle! \n";
        else
            cout << "Izobrazen obect klassa Square! \n";
}
 
 
class Square: public Rectangle
{
    public:
        Square(int len);
        Square(int len, int width);
        ~Square(){}
        long GetPerim(){return 4*GetLength();}
};
 
Square::Square (int len)
        :Rectangle(len, len) {}
 
Square::Square (int len, int width)
        :Rectangle(len,width)
{
    if (GetLength() != GetWidth())
        cout << "Error, not a square ... Rectangle??? \n";
}
 
 
 
int main()
{
    int choice;
    bool fQuit = false;
    Shape *sp;
 
 
    while (!fQuit)
    {
        cout << "[1] Circle; [2] Rectangle; [3] Square; [0] Quit: ";
        cin >> choice;
 
        switch (choice)
        {
        case 0: fQuit = true;
            break;
 
        case 1: 
            sp = new Circle(5);
            cout << "Ploschad = " << sp->GetArea ()<<"\n";
            cout << "Perimetr = " << sp->GetPerim ()<<"\n";
            break;
 
        case 2: 
            sp = new Rectangle(4,6);
            cout << "Ploschad = "<< sp->GetArea () <<"\n";
            cout << "Perimetr = "<< sp->GetPerim() <<"\n";
 
            break;
 
        case 3: 
        /*  sp = new Square(5,5);
            cout << "Ploschad = "<< sp->GetArea () <<"\n";
            cout << "Perimetr = "<< sp->GetPerim() <<"\n";*/
            
            sp = new Square(5);
            cout << "Ploschad = "<< sp->GetArea () <<"\n";
            cout << "Perimetr = "<< sp->GetPerim() <<"\n";
           
        /*    sp = new Square(5,7);
            cout << "Ploschad = "<< sp->GetArea () <<"\n";
            cout << "Perimetr = "<< sp->GetPerim() <<"\n"; */
            break;
 
        default: cout << "Enter a number between 0 and 3" << endl;
            continue;
            break;
        }
        if (!fQuit)
        sp->Draw();
        delete sp;
        sp = 0;
        cout << "\n";
    }
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2017, 15:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Необходимо понять код (C++):

Необходимо понять код - C++
Народ, пожалуйста закомментируйте код #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;memory&gt; class Person { protected: ...

Необходимо понять процесс решения - C++
Даны 4 точки: A (x1, y1, z1), B (x2, y2, z2), C (x3, y3, z3), D (x4, y4, z4) Задания: Составить уравнения: 1. Прямой AB 2....

Не могу понять код - C++
Напишите, пожалуйста, что означает каждая строчка кода #include &lt;stdio.h&gt; #include &lt;string.h&gt; char s,t,c1,c2; bool...

Как понять код? - C++
этот код запускается , но как понять что он именно выполняет? может быть кто ни будь прокомментирует? #include &lt;conio.h&gt; ...

как понять код? - C++
#include &lt;string.h&gt; int main() { char str = &quot;abcdef&quot;; int slen = strlen(str); for(int i=0;i&lt;slen/2;i++) { ...

Не понять как работает код - C++
int main() { int i = 0; for (;;) { i = 0; while (GetAsyncKeyState(0x30)) { if (i == 0) {

2
dailydose
overmind
397 / 133 / 35
Регистрация: 21.07.2016
Сообщений: 625
08.05.2017, 15:54 #2
Што именно не понятно? Код вроде самодокументируемый, проблем при чтении не возникло.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7492 / 4607 / 693
Регистрация: 29.11.2010
Сообщений: 12,603
10.05.2017, 19:22 #3
Будете дублировать темы и нарушать правила форума - больше помогать не буду.
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
#include <iostream>
using namespace std;
 
// абстрактный базовый класс "фигура"
class Shape
{
    public:
        // конструктор
        Shape(){}
        // деструктор
        ~Shape(){}
        // чисто виртуальная функция для вычисления площади
        virtual long GetArea() = 0;
        // чисто виртуальная функция для вычисления периметра
        virtual long GetPerim() = 0;
        // чисто виртуальная функция для рисования фигуры
        virtual void Draw() = 0;
};
 
// класс круг, наследуется от фигуры
class Circle:public Shape
{
    private:
        // свойство класса - радиус
        int itsRadius;
 
    public:
        // конструктор принимает радиус и инициализирует свойство класса в списке инициализации
        Circle(int radius):itsRadius(radius){}
        // деструктор
        ~Circle(){}
        // определяем виртуальную функцию для вычисления площади
        long GetArea(){return 3*itsRadius*itsRadius;} // WTF, почему такая формула, pi * r^2 же
        long GetPerim() {return 6*itsRadius;} // WTF, почему такая формула, 2 * pi * r же
        virtual void Draw(); // объявление метода
 
};
 
// реализация метода
void Circle::Draw ()
{
    cout << "Izobrazen obect klassa Circle! \n";
}
 
// класс прямоугольник наследуется от фигуры
class Rectangle:public Shape
{
    private:
        // ширина
        int itsWidth;
        // длина
        int itsLength;
    public:
        Rectangle(int len, int width)
            :itsLength(len), itsWidth(width){}
        ~Rectangle(){}
         // переопределяем метод для рассчёта площади
         long GetArea(){return itsLength*itsWidth;}
         // переопределяем метод для рассчёта периметра
         long GetPerim() {return 2*itsLength + 2*itsWidth;}
         // get методы для получения значения свойств класса
         int GetLength(){return itsLength;}
         int GetWidth(){return itsWidth;}
         void Draw();
};
 
// метод для рисования
void Rectangle::Draw ()
{
    if (GetLength() != GetWidth())
     cout << "Izobrazen obect klassa Rectangle! \n";
        else
            cout << "Izobrazen obect klassa Square! \n";
}
 
// класс квадрат наследуется от прямоугольника
class Square: public Rectangle
{
    public:
        Square(int len);
        Square(int len, int width);
        ~Square(){}
        long GetPerim(){return 4*GetLength();}
};
 
Square::Square (int len)
        :Rectangle(len, len) {}
 
Square::Square (int len, int width)
        :Rectangle(len,width)
{
    if (GetLength() != GetWidth())
        cout << "Error, not a square ... Rectangle??? \n";
}
 
 
 
int main()
{
    int choice;
    bool fQuit = false;
    Shape *sp;
 
    // пока не выбрали выход
    while (!fQuit)
    {
        cout << "[1] Circle; [2] Rectangle; [3] Square; [0] Quit: ";
        // считываем значение
        cin >> choice;
        // в зависимости от выбора пользователя создаём разные фигуры
        // вызываем виртуальный метод для подсчёта площади и периметра
        // используя полиморфизм
        switch (choice)
        {
        case 0: fQuit = true;
            break;
 
        case 1:
            sp = new Circle(5);
            cout << "Ploschad = " << sp->GetArea ()<<"\n";
            cout << "Perimetr = " << sp->GetPerim ()<<"\n";
            break;
 
        case 2:
            sp = new Rectangle(4,6);
            cout << "Ploschad = "<< sp->GetArea () <<"\n";
            cout << "Perimetr = "<< sp->GetPerim() <<"\n";
 
            break;
 
        case 3:
        /*  sp = new Square(5,5);
            cout << "Ploschad = "<< sp->GetArea () <<"\n";
            cout << "Perimetr = "<< sp->GetPerim() <<"\n";*/
 
            sp = new Square(5);
            cout << "Ploschad = "<< sp->GetArea () <<"\n";
            cout << "Perimetr = "<< sp->GetPerim() <<"\n";
 
        /*    sp = new Square(5,7);
            cout << "Ploschad = "<< sp->GetArea () <<"\n";
            cout << "Perimetr = "<< sp->GetPerim() <<"\n"; */
            break;
 
        default: cout << "Enter a number between 0 and 3" << endl;
            continue;
            break;
        }
        if (!fQuit)
        sp->Draw();
        // освобождаем память под указатель
        delete sp;
        sp = 0;
        cout << "\n";
    }
 
    return 0;
}
Обратите внимание, что у вас в формулах для круга пи почему то считается равным 3.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2017, 19:22
Привет! Вот еще темы с ответами:

Не могу понять код пузырьковой сортировки - C++
Сам алгоритм работы ясен, а как это воплотить в код не могу понять. Если читать готовые коды, тоже не могу разобраться.

Как понять нормальный у тебя код или нет? - C++
Сейчас в процессе изучения C++ столкнулась с тем, что подсматриваю в интернете кто и как выполняет те или иные задачи. Еще ни разу не было...

Не могу понять как работает этот код в деталях - C++
dg1-&gt;Rows-&gt;Clear();//Очищяет в датагриде строки ifstream infile (StrToChar(openFileDialog1-&gt;FileName));//Чтение из файла ...

Помогите понять код по теме алгоритма Дифии-Хелмана - C++
Делаю лабу по теме алгоритму Дифии-Хелмана, с теорией проблемы, с кодом тоже нет проблем. Но одну функцию не смог сам написать(нашёл в...


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

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

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