Nikit@132
1

Разработать класс Circle

10.04.2013, 20:47. Показов 6567. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
подключите пожалуйста библиотеки в отдельных проетах
Разработать класс Circle, обеспечивающий расчёт площади и длины окружности.
Класс должен включать в себя поле r-радиус окружности, а также методы:
double per()-вычисляет длину окружности фигуры
double area()-вычисляет площадь фигуры
void print()-выводит на экран сведение о фигуре
ПРЕДМЕТ Объектно ориентированное программирование 1 курс 2 семестр ВУЗ:МИИТ
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2013, 20:47
Ответы с готовыми решениями:

Класс Circle
Создать класс Circle, который описывает круг с его координатами и радиусом. На основе этого класса,...

Создать класс circle
Помогите пожалуйста.Требуется создать класс circle,который должен быть описан тремя...

Класс Circle (круг), который вычисляет площадь и периметр по радиусу
Напишите класс Circle (круг), который вычисляет площадь и периметр по радиусу, который передаётся...

Создать абстрактный базовый класс Figure и производные классы Rectangle, Circle
Создать абстрактный базовый класс Figure с виртуальными методами вычисления площади и периметра....

10
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
10.04.2013, 23:54 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
#include <iostream.h>
class Circle{
private:
        #define M_PI 3.14159265358979323846
        double r;
public:
        Circle(void){r=0;}
        Circle(double radius){r=radius;}
        Circle(Circle& c){r=c.r;}
        ~Circle(void){}
 
        double per(){return 2*M_PI*r;}
        double area(){return M_PI*r*r;}
        void print(){
                cout<<"radius= "<<r<<endl;
                cout<<"perimetr= "<<per()<<endl;
                cout<<"srea= "<<area()<<endl;
        }
 
};
 
int main()
{
Circle A(5.5);
A.print();
system("pause");
        return 0;
}
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,511
10.04.2013, 23:57 3
Цитата Сообщение от Черный ворон Посмотреть сообщение
private:
* * * * #define M_PI 3.14159265358979323846
А это зачем

Добавлено через 1 минуту
Цитата Сообщение от Черный ворон Посмотреть сообщение
#include <iostream.h>
Цитата Сообщение от Черный ворон Посмотреть сообщение
cout<<"radius= "<<r<<endl;
на ВС 3.1 пишешь?
0
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
11.04.2013, 00:57 4
ValeryS,
Цитата Сообщение от ValeryS Посмотреть сообщение
А это зачем
а как Вы посчитаете площадь и радиус без числа Пи?


Цитата Сообщение от ValeryS Посмотреть сообщение
на ВС 3.1 пишешь?
с чего Вы это взяли? вроде бы не замечал, чтобы синтаксис потокового вывода сильно изменялся.
да и директивы препроцессора вроде все те же.
разве что сейчас просто <iostream> для этого заголовочного файла достаточно (может поэтому Вы так решили)
конкретно этот пример был скомпилирован в "шестом "Builder'е
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,511
11.04.2013, 01:52 5
Цитата Сообщение от Черный ворон Посмотреть сообщение
а как Вы посчитаете площадь и радиус без числа Пи?
я не про пи ( хотя он есть в библиотеке )
а про макрос в описании класса
зачем это?

Цитата Сообщение от Черный ворон Посмотреть сообщение
вроде бы не замечал, чтобы синтаксис потокового вывода сильно изменялся.
серьезно? не замечал?
а то что заголовочный файл изменился?
и появилось пространство имен
и писать нужно так( объявить пространство имен)
C++
1
using namespace std;
или так (каждый раз вызывать из пространства)
C++
1
std::cout
0
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
11.04.2013, 09:35 6
Цитата Сообщение от ValeryS Посмотреть сообщение
зачем это?
препроцессор в любом случае отрабатывает раньше компилятора. на мой взгляд этим фактом тоже надо уметь пользоваться и применять.
да и где ему еще быть, если не внутри класса? Если ООП подразумевает, что есть только свойства и методы. более ничего.

Цитата Сообщение от ValeryS Посмотреть сообщение
Код C++
1
using namespace std;
возможно так. наверно это было бы и правильнее. хотя сомнительно, чтобы в таком коротком коде возникли конфликты с именами.


но вот по поводу этого я видел холивары о загромождении кода. так что есть тенденция, что такое не есть хорошо.
Цитата Сообщение от ValeryS Посмотреть сообщение
Код C++
1
std::cout
0
4764 / 2574 / 892
Регистрация: 29.11.2010
Сообщений: 5,565
11.04.2013, 09:52 7
Все-таки нехватает геттера и сеттера для радиуса, "лишние" конструктор копирования и деструктор. Кстати, где тогда оператор присваивания? M_PI есть в cmath'е.

Вариант кода по прошлому стандарту.
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
#include <cmath>
#include <iostream>
#include <iomanip>
 
class Circle {
 public:
  Circle() : radius(0) {}
  Circle(double radius) : radius(radius) {}
  double getRadius() const { return radius; }
  void setRadius(double radius) { this->radius = radius; }
  double getArea() const { return M_PI * getRadius() * getRadius(); }
  double getPerimeter() const { return 2 * M_PI * getRadius(); }
  void print() const {
    std::cout << "Circle{radius=" << std::fixed << std::setprecision(3) <<
      getRadius() << ",area=" << getArea() << ",perimeter=" <<
      getPerimeter() << "}" << std::endl;
  }
 private:
  double radius;
};
 
int main(int argc, char *argv[]) {
  Circle(10.12).print();
  Circle(2.3).print();
  Circle(7.7).print();
 
  std::cin.get();
  return 0;
}
Не нравятся мне задания, где просят вывод в самом классе реализовывать. Это неправильно, когда столь узкоспециализированный класс занимается собственным выводом.

Цитата Сообщение от Черный ворон Посмотреть сообщение
но вот по поводу этого я видел холивары о загромождении кода. так что есть тенденция, что такое не есть хорошо.
Холивары ведут те, кто не писал крупный и очень крупный софт, остальные начинают догадываться, что такое namespace'ы, как ими пользоваться и почему не надо все пихать в один namespace. Тем более в std.
1
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
11.04.2013, 10:15 8
Цитата Сообщение от lemegeton Посмотреть сообщение
"лишние" конструктор копирования и деструктор. Кстати, где тогда оператор присваивания?
верно о операторе присваивания забыл. каюсь. нечто такое
C++
1
2
3
4
Circle& operator = (Circle& c) {
        r=c.r;
        return *this;
}
но как может быть лишним деструктор? он в любом случае будет, если не ошибаюсь. просто пустым его добавит компилятор, а не я. Хотя когда-то препод мне говорил, что деструктор, хоть и пустой, лучше писать явно тем самым показывая, что осознаешь для чего он, как действует и какой должен быть в каждом конкретном случае. здесь динамически память не выделяется, да. но деструктор то все равно будет.

Цитата Сообщение от lemegeton Посмотреть сообщение
Холивары ведут те, кто не писал крупный и очень крупный софт, остальные начинают догадываться, что такое namespace'ы, как ими пользоваться и почему не надо все пихать в один namespace. Тем более в std.
спасибо, учту
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,511
11.04.2013, 10:38 9
Цитата Сообщение от Черный ворон Посмотреть сообщение
препроцессор в любом случае отрабатывает раньше компилятора.
и что ???
#define это просто подмена
там где увидит M_PI там вставит 3.14159265358979323846
Цитата Сообщение от Черный ворон Посмотреть сообщение
Если ООП подразумевает, что есть только свойства и методы. более ничего.
define к ООП не имеет никакого отношения
не зря рекомендуют им пользоваться ( не возможно контролировать)
рекомендуется const

Цитата Сообщение от Черный ворон Посмотреть сообщение
возможно так. наверно это было бы и правильнее. хотя сомнительно, чтобы в таком коротком коде возникли конфликты с именами.
тут не конфликт имен
тут просто не будет видно функций
пространство имен не объявлено



Цитата Сообщение от Черный ворон Посмотреть сообщение
но вот по поводу этого я видел холивары о загромождении кода.
холивары на то и холивары что есть одни эмоции

я же сказал есть два пути

тебя спасло что компилятор поддерживает старый стандарт, а например VS2008( и позднее) выдаст кучу ошибок

я где то видел такую реализацию #include <iostream.h>
C++
1
2
#include <iostream>
using namespace std;
для поддержки старых программ
может у тебя так же реализован?
1
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
11.04.2013, 10:52 10
Цитата Сообщение от ValeryS Посмотреть сообщение
для поддержки старых программ
может у тебя так же реализован?
может и так. наверное стоит покопаться в некоторых *.h для общего развития.
хотя в math.h, кажется, M_PI прописан тоже с помощью define
собственно на истинность и соответствие стандартам я и не претендовал, только учусь. новые знания всегда полезны. спасибо за поправки.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,511
11.04.2013, 11:29 11
Цитата Сообщение от Черный ворон Посмотреть сообщение
хотя в math.h, кажется, M_PI прописан тоже с помощью define
Но не в классе же
0
11.04.2013, 11:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2013, 11:29
Помогаю со студенческими работами здесь

создал "circle.h" файл. При компиляции Cpp файла выдаёт unable to open include file 'circle.h'
Помогите разобраться в чём проблема? Был создан circle.h, а при компиляции cpp файла ругается....

Класс: Разработать абстрактный класс класс Point для задания координаты...
Всем привет, помогите пожалуйста решить задачу, я уже всю голову сломал, не знаю как решить... ...

Разработать структуру "Circle"
• 1. структуры 2. Структуры записаны в файле input.txt в консоли вводится путь папки с этим...

Создать класс СПИСОК целых чисел. Разработать класс СТЕК
&quot;Создать класс СПИСОК целых чисел. Разработать класс СТЕК, который вмещает объект класса СПИСОК....

Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты.
Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты.

Разработать класс Tableware (посуда) и производный класс Dish (тарелка). Описать атрибуты
Разработать класс Tableware (посуда) и производный класс Dish (тарелка). Описать атрибуты.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru