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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
airsed
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 3
#1

Создать класс Круг на координатной плоскости - C++

15.05.2013, 12:14. Просмотров 2126. Ответов 7
Метки нет (Все метки)

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

Создать класс Круг на координатной плоскости. Данные класса - координаты центра круга и радиус. Класс имеет конструктор по умолчанию, конструктор круга единичного радиуса, и конструктор произвольного круга.
Определить методы для определения длины окружности и площади круга, вывода параметров круга на экран.
1. Описать объекты созданного типа, обратиться к методам.
2. Создать динамические объекты созданного типа, обратиться к их методам.
3. Создать метод шоу для графического отображения различных объектов класса.
4. Как метод класса перегрузить унарный операцию ++ для увеличения радиуса круга.

Классам-потомком для круга объявить класс Кольцо, который имеет дополнительные поле - внутренний радиус и метод Площадь. Определить конструктор кольца. Выведите данные на экран с использованием метода базового класса.

---------

Знаю задание не простое, но может кто-то сможет помочь. Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 12:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать класс Круг на координатной плоскости (C++):

Класс ПРЯМАЯ на координатной плоскости - C++
как описать класс ПРЯМАЯ на координатной плоскости. уравнение прямой y=ax+b. Данные: угловой коэффициент a и смещение b. Конструкторы:...

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

создать класс что ассоциируется с точкой на плоскости - C++
создать класс что ассоциируется с точкой на плоскости с координатами типа float и поддерживает операции перемещения и масштабирования.

Четверти на координатной плоскости - C++
Вводятся координаты точки на плоскости (X и Y, вещественные числа). Вывести номер координатной четверти, в которой расположена эта точка....

Создать класс Point для работы с точками на плоскости - C++
Задания должны быть реализованы двумя способами: - тип данных представляется структурой с необходимыми полями, а операции реализуются как...

Создать класс Point для работы с точками на плоскости - C++
Прошу помощи, только третья лаба по классам. Не совсем понимаю (может даже вообще) как это делать. Прошу указать и объяснить ошибки. И...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
GTS
25 / 26 / 3
Регистрация: 02.04.2012
Сообщений: 293
15.05.2013, 12:25 #2
Тут присутствует математика, у меня с ней не очень, напишите, как можно имея координаты центра и радиуса определить длины окружности и площади круга (напишите формулы, только все подробно), PS я тоже не далеко ушел в изучении C++ но большинство того, что вы пишите мне понятно, в той или иной мере.
0
airsed
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 3
15.05.2013, 12:39  [ТС] #3
Вот сдесь можно глянуть формулы http://school-assistant.ru/?predmet=..._ploshad_kruga

Добавлено через 1 минуту
Ссылка не работает почему-то, вот нашёл формулы: длина окр - 2 пи эр, площадь круга - пи эр квадрат.
0
GTS
25 / 26 / 3
Регистрация: 02.04.2012
Сообщений: 293
15.05.2013, 15:05 #4
Как я уже писал выше, я только начинаю изучать C++ по этому то, что я написал многие программисты оценят в 3---- (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
#include <iostream>
 
class krug // объявляем класс круг
{ // начало тела класса круг
public: // далее будут идти открытые данные класса
 
double radius; // радиус 
    
    
void radius_okrujnost(double radius) // метод класса для расчета радиуса окружности, все что ниже расчет
{
setlocale(LC_ALL,"");
 
double pi = 3.14;
double dlinna_okr = 2 * pi * radius;
 
std::cout << "Радиус окружности равен: " << dlinna_okr << "\n";
}
 
void ploshad_okrujnosti(double radius) // метод класса для расчета площади окружности, все что ниже расчет
{
setlocale(LC_ALL,"");
 
double pi = 3.14;
double ploshad = pi * (radius * radius);
 
std::cout << "Площадь круга равна: " << ploshad << "\n";
}
 
}; // конец тела класса 
 
int main()
{
setlocale(LC_ALL,"");
 
int choice;
 
std::cout << "\n***\n";
std::cout << "1. Узнать длину окружности\n";
std::cout << "2. Узнать площадь окружности\n";
std::cout << "3. Узнать площадь и длину окружности\n";
std::cout << "4. Выйти из программы\n";
std::cout << "Выберите действие соответствующей цифрой (1, 2, 3 или 4): ";
std::cin >>  choice;
 
switch (choice)
{
case 1:
{
double *r = new double;
std::cout << "Введите радиус: ";
std::cin >> *r;
krug *krug_d = new krug;  // создаем динамический объект класса 
krug_d->radius_okrujnost(*r);
delete krug_d;
delete r;
break;
}
 
case 2:
{
double *r = new double;
std::cout << "Введите радиус: ";
std::cin >> *r;
 
krug *krug_d = new krug;  // создаем динамический объект класса 
krug_d->ploshad_okrujnosti(*r);
delete krug_d;
delete r;
break;
}
 
case 3:
            {
double *r = new double;
std::cout << "Введите радиус: ";
std::cin >> *r;
 
krug *krug_d = new krug;  // создаем динамический объект класса 
krug_d->radius_okrujnost(*r);
krug_d->ploshad_okrujnosti(*r);
delete krug_d;
delete r;
break;
}
 
case 4:
{
break;
}
 
default:
{
std::cout << "\nВы ошиблись цифрой, вернитесь в главное меню и попробуйте еще..\n";
system("pause");
main();
break;
 
}
}
 
system("pause");
return 0;
}


Программа:
1. объявляет класс круг
2. создает данные класса - радиус
3. имеет метод определения площади и длинны окружности
4. создает динамический объект


все остальное я или не понял (про конструкторы, что именно надо и про координаты на плоскости) или я не умею (наследование например).

Да и еще, за математику я не ручаюсь, сверяйте с калькулятором сами
0
nobless1368
14 / 14 / 1
Регистрация: 04.06.2012
Сообщений: 124
Записей в блоге: 1
15.05.2013, 15:13 #5
Цитата Сообщение от GTS Посмотреть сообщение
Как я уже писал выше, я только начинаю изучать C++ по этому то, что я написал многие программисты оценят в 3---- (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
#include <iostream>
 
class krug // объявляем класс круг
{ // начало тела класса круг
public: // далее будут идти открытые данные класса
 
double radius; // радиус 
    
    
void radius_okrujnost(double radius) // метод класса для расчета радиуса окружности, все что ниже расчет
{
setlocale(LC_ALL,"");
 
double pi = 3.14;
double dlinna_okr = 2 * pi * radius;
 
std::cout << "Радиус окружности равен: " << dlinna_okr << "\n";
}
 
void ploshad_okrujnosti(double radius) // метод класса для расчета площади окружности, все что ниже расчет
{
setlocale(LC_ALL,"");
 
double pi = 3.14;
double ploshad = pi * (radius * radius);
 
std::cout << "Площадь круга равна: " << ploshad << "\n";
}
 
}; // конец тела класса 
 
int main()
{
setlocale(LC_ALL,"");
 
int choice;
 
std::cout << "\n***\n";
std::cout << "1. Узнать длину окружности\n";
std::cout << "2. Узнать площадь окружности\n";
std::cout << "3. Узнать площадь и длину окружности\n";
std::cout << "4. Выйти из программы\n";
std::cout << "Выберите действие соответствующей цифрой (1, 2, 3 или 4): ";
std::cin >>  choice;
 
switch (choice)
{
case 1:
{
double *r = new double;
std::cout << "Введите радиус: ";
std::cin >> *r;
krug *krug_d = new krug;  // создаем динамический объект класса 
krug_d->radius_okrujnost(*r);
delete krug_d;
delete r;
break;
}
 
case 2:
{
double *r = new double;
std::cout << "Введите радиус: ";
std::cin >> *r;
 
krug *krug_d = new krug;  // создаем динамический объект класса 
krug_d->ploshad_okrujnosti(*r);
delete krug_d;
delete r;
break;
}
 
case 3:
            {
double *r = new double;
std::cout << "Введите радиус: ";
std::cin >> *r;
 
krug *krug_d = new krug;  // создаем динамический объект класса 
krug_d->radius_okrujnost(*r);
krug_d->ploshad_okrujnosti(*r);
delete krug_d;
delete r;
break;
}
 
case 4:
{
break;
}
 
default:
{
std::cout << "\nВы ошиблись цифрой, вернитесь в главное меню и попробуйте еще..\n";
system("pause");
main();
break;
 
}
}
 
system("pause");
return 0;
}


Программа:
1. объявляет класс круг
2. создает данные класса - радиус
3. имеет метод определения площади и длинны окружности
4. создает динамический объект


все остальное я или не понял (про конструкторы, что именно надо и про координаты на плоскости) или я не умею (наследование например).

Да и еще, за математику я не ручаюсь, сверяйте с калькулятором сами
как я понял, нужно было перегрузить конструктор класса krug, чтобы он в зависимости от количества входных данных менял свой функционал.
0
GTS
25 / 26 / 3
Регистрация: 02.04.2012
Сообщений: 293
15.05.2013, 15:23 #6
Цитата Сообщение от nobless1368 Посмотреть сообщение
как я понял, нужно было перегрузить конструктор класса krug, чтобы он в зависимости от количества входных данных менял свой функционал.
если честно я не понимаю перегрузку (не в данном случае, а вообще), для чего она делается и зачем, что бы можно было использовать одну и ту же функцию по наименованию с разными параметрами, какой от этого толк.
0
airsed
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 3
15.05.2013, 15:53  [ТС] #7
Спасибо что откликнулись. Скажите, а графически сложно отобразить различные обьекты класса, там линии и точки в цикле перебирать?
0
nobless1368
14 / 14 / 1
Регистрация: 04.06.2012
Сообщений: 124
Записей в блоге: 1
15.05.2013, 17:03 #8
Цитата Сообщение от GTS Посмотреть сообщение
если честно я не понимаю перегрузку (не в данном случае, а вообще), для чего она делается и зачем, что бы можно было использовать одну и ту же функцию по наименованию с разными параметрами, какой от этого толк.
Как раз такие в этом и весь смысл
Представь, что ты не знаешь сколько параметров нужно будет передать в функцию (допустим, оно переменно). Например, у меня была задача написать программу, которая парсит ответ от сервера. Сам ответ возвращался в виде отдельных элементов в количестве от 3 до 6. Для того, чтобы обработать каждый из ответов мне бы пришлось написать 4 функции и как-то их назвать, хотя они выполняли, по сути, одну и ту же функцию. Кроме того, пришлось бы в теле функции, принимающей ответ от сервера, считать количество полученных элементов и делать ветвление в соответствии с их количеством. А теперь представь, если бы этих элементов было не 3-6, а 1-100. Одних проверок надо было бы сделать 101 (в наихудшем). Представь сколько лишней работы делала бы твоя программа?

Добавлено через 2 минуты
Цитата Сообщение от airsed Посмотреть сообщение
Спасибо что откликнулись. Скажите, а графически сложно отобразить различные обьекты класса, там линии и точки в цикле перебирать?
смотря куда тебе их нужно отобразить. Если в консоль, то легко: гоняешь в цикле cout, немного работая мозгом при написании программы, а если в отдельное окошко, то там уже WinAPI(Windows Forms)/Qt/GTK и т.д.т.п.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 17:03
Привет! Вот еще темы с ответами:

Создать класс Point для работы с точками на плоскости - C++
помогите пожалуйста,очень нужно. Создать класс Point для работы с точками на плоскости. Координаты точки – декартовы. • перемещение...

Поиск точки на координатной плоскости - C++
Помогите пожалуйста!! Нужно написать программу которая будет искать рандомную точку на координатной плоскости, относительно движущейся...

Сравнение двух точек на координатной плоскости - C++
С++ Никак не могу сделать , помогите , пожалуйста! Предметная область: «Точка в двумерном пространстве». Данные структуры: координаты...

Очередь, состоящая из точек координатной плоскости - C++
Доброго времени суток. Мне необходимо создать очередь, состоящую из пар чисел (х и у) и создать функции удаления, добавления элементов в...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.05.2013, 17:03
Ответ Создать тему
Опции темы

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