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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Nikit@132
Сообщений: n/a
#1

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

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

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

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

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

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

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

Разработать класс - C++
Требуется разработать класс для работы с деревьями. Только не с бинарными деревьями, не путайте :) Каждый элемент может иметь сколько...

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

Разработать класс - C++
Помогите решить задачи: Разработать класс Number. Класс должен быть прозрачен с позиции любого числового типа языка С. Таким образом...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Черный ворон
129 / 123 / 6
Регистрация: 31.01.2012
Сообщений: 435
10.04.2013, 23:54     Разработать класс Circle #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;
}
ValeryS
Модератор
6535 / 5001 / 460
Регистрация: 14.02.2011
Сообщений: 16,632
10.04.2013, 23:57     Разработать класс Circle #3
Цитата Сообщение от Черный ворон Посмотреть сообщение
private:
* * * * #define M_PI 3.14159265358979323846
А это зачем

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


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

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

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


но вот по поводу этого я видел холивары о загромождении кода. так что есть тенденция, что такое не есть хорошо.
Цитата Сообщение от ValeryS Посмотреть сообщение
Код C++
1
std::cout
lemegeton
2918 / 1347 / 134
Регистрация: 29.11.2010
Сообщений: 2,721
11.04.2013, 09:52     Разработать класс Circle #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.
Черный ворон
129 / 123 / 6
Регистрация: 31.01.2012
Сообщений: 435
11.04.2013, 10:15     Разработать класс Circle #8
Цитата Сообщение от lemegeton Посмотреть сообщение
"лишние" конструктор копирования и деструктор. Кстати, где тогда оператор присваивания?
верно о операторе присваивания забыл. каюсь. нечто такое
C++
1
2
3
4
Circle& operator = (Circle& c) {
        r=c.r;
        return *this;
}
но как может быть лишним деструктор? он в любом случае будет, если не ошибаюсь. просто пустым его добавит компилятор, а не я. Хотя когда-то препод мне говорил, что деструктор, хоть и пустой, лучше писать явно тем самым показывая, что осознаешь для чего он, как действует и какой должен быть в каждом конкретном случае. здесь динамически память не выделяется, да. но деструктор то все равно будет.

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

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



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

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

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

я где то видел такую реализацию #include <iostream.h>
C++
1
2
#include <iostream>
using namespace std;
для поддержки старых программ
может у тебя так же реализован?
Черный ворон
129 / 123 / 6
Регистрация: 31.01.2012
Сообщений: 435
11.04.2013, 10:52     Разработать класс Circle #10
Цитата Сообщение от ValeryS Посмотреть сообщение
для поддержки старых программ
может у тебя так же реализован?
может и так. наверное стоит покопаться в некоторых *.h для общего развития.
хотя в math.h, кажется, M_PI прописан тоже с помощью define
собственно на истинность и соответствие стандартам я и не претендовал, только учусь. новые знания всегда полезны. спасибо за поправки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2013, 11:29     Разработать класс Circle
Еще ссылки по теме:

Разработать класс - C++
Разработать класс, набор методов (конструктор, деструктор и указаны методы) для программной модели заданного объекта. Описание объекта и...

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

Разработать класс - C++
Помогите написать программу, вот задание: Разработать класс, набор методов (конструктор и минимум два метода) для программной модели...

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

Разработать класс Book - C++
почему мне выдает ошибку??? Нужно разработать класс Book. определить конструктор и деструктор. реализовать объявленные методы доступными...


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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6535 / 5001 / 460
Регистрация: 14.02.2011
Сообщений: 16,632
11.04.2013, 11:29     Разработать класс Circle #11
Цитата Сообщение от Черный ворон Посмотреть сообщение
хотя в math.h, кажется, M_PI прописан тоже с помощью define
Но не в классе же
Yandex
Объявления
11.04.2013, 11:29     Разработать класс Circle
Ответ Создать тему
Опции темы

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