web dev
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
1

Напишите программу, которая рассчитывает и печатает диаметр, длину окружности и площадь круга

23.08.2011, 21:16. Показов 7416. Ответов 44
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
4.30. Напишите программу, которая читает радиус (как значение типа double),
рассчитывает и печатает диаметр, длину окружности и площадь круга. Для ?
используйте значение 3.14159.


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
#include "stdafx.h"
#include <iostream>
#include "lang.h"
 
using namespace std;
 
class circle
{
public:
    circle(double radius)
    {
    this->radius = radius; 
    }
    double printDiametr()
    {
        diameter = this->radius  * pi;
        return diameter;
    }
 private:
        double radius; 
    double pi;
        double diameter; 
        double length; 
        double area; 
};
 
int main()
{
        lang();
        double radius;
    double pi = 3.1415;
        circle One(radius);
        cout << "Введите радиус" << endl;
        cin >> radius;
    One.printDiametr();
 
        system("PAUSE");
        return 0;
}
Вроде как суть понял в прошлой задаче, немного прояснилось что к чему, решил сделать подобную
Вроде всё сделал правильно но радиус не выводится *цензура*.


Что не так, помогите пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2011, 21:16
Ответы с готовыми решениями:

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

Напишите программу, которая находит диаметр круга по его окружности
Напишите программу, которая находит диаметр круга по его окружности(длину окружности вводит...

Найти площадь круга, радиус, длину окружности и диаметр
Дан круг , где R-радиус окружность, D-диаметр , L-длинна окружности. Найти площадь круга, радиус,...

Дана площадь S круга. Найти его диаметр D и длину L окружности
Помогите пожалуйста перевести данный код в Assembler: Дана площадь S круга. Найти его диаметр D...

44
Заблокирован
23.08.2011, 21:43 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от lera8 Посмотреть сообщение
TBIKC, Могу предложить вот такой вот вариант решения задачи и готова ответить на вопросы по ней

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
// prj.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <iostream>
using namespace System;
using namespace std;
 
class circle
{
public:
        circle(double radius)
        {
        this->radius = radius; 
        }
        double printDiametr()
        {
                diameter = radius  * 2;
                return diameter;
        }
        void set_pi(double p)
         {
           pi=p;
           
         }
        void Show()
         {
             length=pi*diameter;
             area=pi*radius*radius;
             cout<<"Радиус:"<<radius<<endl;
             cout<<"Диметр"<<diameter<<endl;
             cout<<"Длина:"<<length<<endl;
              cout<<"Площадь:"<<area<<endl;
 
        
         }
 private:
        double radius; 
        double pi;
        double diameter; 
        double length; 
        double area; 
};
 
 
int main(array<System::String ^> ^args)
{
   locale::global(locale("rus"));
                double radius;
        double pi = 3.1415;
        cout << "Введите радиус" << endl;
        cin >> radius;
        circle One(radius);
        One.set_pi(pi);
        One.Show();
                system("PAUSE");
                return 0;
}
Сразу же скажу, что это плохой вариант! Очень плохой! При создании объекта circle его поля так и остаются неи нициализированными. Например, поле diametr следовало бы инициализировать в конструкторе. И вообще не понятно, зачем это поле определять в классе, если он рассчитывается от значения радиуса? То есть просто следует переписать член-функцию printDiametr, объявиви ее с квалификатором const и возвращать подсчитанное значение диаметра. Дальше, как говорится, больше, но пока на этом останавлюсь.
0
636 / 219 / 64
Регистрация: 03.11.2009
Сообщений: 488
23.08.2011, 21:47 22
TBIKC, просто grizlik78 имел ввиду что нужно ввести значение радиуса до создания объекта т.е.
C++
1
2
3
cout << "Введите радиус" << endl;
        cin >> radius;//сначала вводите радиус(инициализируете его) а потом только создаём объкт 
        circle One(radius);
Добавлено через 2 минуты
Сыроежка, тогда уже нужно было всё инициализировать нулями, то есть сделать вообще конструктор без параметров и потом уже установить значение радиуса и рассчитать значение диаметра,площади и длины
0
web dev
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
23.08.2011, 21:48  [ТС] 23
lera8, просто grizlik78 имел ввиду что нужно ввести значение радиуса до создания объекта т.е.
Сразу бы так сказали )) Я сижу голову ломаю )))

Вот что у меня( внимательно посмотрите )
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
class circle
{
public:
    circle(double radius)
    {
    this->radius = radius; 
    }
    double printArea()
    {
        area = this->radius  * pi * 2;
        return area;
    }
 private:
        double radius; 
        double pi;
        double diameter; 
        double length; 
        double area; 
};
 
int main()
{       
        locale::global(locale("rus"));   
        double radius;
        double pi = 3.1415;
        cout << "Введите радиус" << endl;
        cin >> radius;
        circle One(radius);
 
        cout << One.printArea();
 
        system("PAUSE");
        return 0;
}
При каждом запуске программы выдает разные значения вместе с числом е+
0
Заблокирован
23.08.2011, 21:50 24
Вот корректное объявление вашего класса!

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
#include "stdafx.h"
#include <iostream>
using namespace System;
using namespace std;
 
class circle
{
public:
        circle(double radius) : radius( radius ) {}
 
        double printDiametr() const
        {
                return ( 2 * radius );
        }
         void Show() const
         {
                double length=2 * pi * radius;
                double area=pi*radius*radius;
                cout<<"Радиус:"<<radius<<endl;
                cout<<"Диметр"<<2 * radius <<endl;
                cout<<"Длина:"<<length<<endl;
                cout<<"Площадь:"<<area<<endl;
          }
 private:
        double radius; 
        static const double pi = 3.14;
};
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
23.08.2011, 21:52 25
Цитата Сообщение от lera8 Посмотреть сообщение
C++
1
void set_pi(double p)

Не по теме:

Если верить Википедии, то данная функция не лишена смысла

— В штате Индиана (США) в 1897 году был выпущен билль (см.: en:Indiana Pi Bill), законодательно устанавливающий значение числа Пи равным 3,2.
— «Число Пи для гренландских китов равно трем» написано в «Справочнике китобоя» 1960-х годов выпуска.
:)

0
web dev
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
23.08.2011, 21:55  [ТС] 26
Написал так static const double pi = 3.14; и выдало
circle:i: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
Мне это абсолютно не понятно
circle(double radius) : radius( radius ) {}

Изучаю плюсы по книге Дейтелов, сейчас на 4 Главе управляющие операторы часть 1 ( if else, while ) И прошёл Введение в классы и объекты глава 3
0
636 / 219 / 64
Регистрация: 03.11.2009
Сообщений: 488
23.08.2011, 21:57 27
TBIKC, вот ещё вариант, может быть нужно чтобы хранились диаметр, площадь и длина
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
// prj.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <iostream>
using namespace System;
using namespace std;
 
class circle
{
public:
        circle()
        {
       radius = 0;
       diameter=0;
           length=0;
           area=0;
           pi=3.1415;
        }
      void set_radius(double rad)
       {
        radius = rad; 
       }
        
        void Show()
         {
             diameter=2*radius;
             length=pi*diameter;
             area=pi*radius*radius;
             cout<<"Радиус:"<<radius<<endl;
             cout<<"Диметр"<<diameter<<endl;
             cout<<"Длина:"<<length<<endl;
              cout<<"Площадь:"<<area<<endl;
 
        
         }
 private:
        double radius; 
        double pi;
        double diameter; 
        double length; 
        double area; 
};
 
 
int main(array<System::String ^> ^args)
{
   locale::global(locale("rus"));
                double radius;
       circle One;
        cout << "Введите радиус" << endl;
        cin >> radius;
        One.set_radius(radius);
        
        One.Show();
                system("PAUSE");
                return 0;
}
0
204 / 205 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
23.08.2011, 21:59 28
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
class circle_t {
        double radius_;
        double diametr_;
        double len_;
        double area_;
public:
        static const double pi = 3.1415926;
        circle_t(const double radius)
                :radius_(radius)
                ,diametr_(radius * 2)
                ,len_(pi * diametr_)
                ,area_(pi * (radius_ * radius_))
        {}
public:
        double diametr() const {return diametr_; }
        double length() const {return len_; }
        double area() const {return area_; }
        double radius() const {return radius_; }
};
....
        circle_t circl(1000);
        cout << circl.radius() << " "
               << circl.diametr() << " "
               << circl.length() << " "
               << circl.area();
0
web dev
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
23.08.2011, 22:00  [ТС] 29
Давайте всё таки лучше доделаем\изменим\переделаем мой последний вариант, чтобы каши не было в голове
0
lera8
23.08.2011, 22:00
  #30

Не по теме:

grizlik78,даже не знаю, обижать или нет :confusion:)

0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
23.08.2011, 22:00 31
Цитата Сообщение от lera8 Посмотреть сообщение
grizlik78,даже не знаю, обижать или нет )
lera8, обижай!
0
lera8
23.08.2011, 22:02
  #32

Не по теме:

grizlik78, ой)):confusion: Извините) Обижаться хотела написать)

0
web dev
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
23.08.2011, 22:04  [ТС] 33
Кто нибудь подскажет что не так ?
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
class circle
{
public:
    circle(double radius)
    {
    this->radius = radius; 
    }
    double printArea()
    {
        area = this->radius  * pi * 2;
        return area;
    }
 private:
        double radius; 
        double pi;
        double diameter; 
        double length; 
        double area; 
};
 
int main()
{       
        locale::global(locale("rus"));   
        double radius;
        double pi = 3.1415;
        cout << "Введите радиус" << endl;
        cin >> radius;
        circle One(radius);
 
        cout << One.printArea();
 
        system("PAUSE");
        return 0;
}
В классе написать static const double pi = 3.1415926;
не могу, выдаёт ошибку ( ms 2010 )
0
636 / 219 / 64
Регистрация: 03.11.2009
Сообщений: 488
23.08.2011, 22:05 34
TBIKC, а давайте вы уточните что вам всё таки нужно? каким должен быть класс, какие методы и члены должны быть в нём
0
web dev
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
23.08.2011, 22:07  [ТС] 35
Всё должно остаться как есть, в смысле что вычисляется только площадь,
При попытке ввода радиуса выводиться непонятная площадь ( не соответствующая )
Скопируйте посмотрите, пожалуйста
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
23.08.2011, 22:08 36
В классе:
C++
1
static const double pi;
За пределами класса, после его объявления:
C++
1
const double circle::pi = 3.14159265;
0
web dev
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
23.08.2011, 22:11  [ТС] 37
Learn.cpp(32): error C2655: circle:i: недопустимое определение или повторное объявление в текущей области видимости
1> Learn.cpp(17): см. объявление "circle:i"
1>Learn.cpp(32): error C2086: const double circle:i: переопределение
1> Learn.cpp(17): см. объявление "pi"

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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
class circle
{
public:
    circle(double radius)
    {
    this->radius = radius; 
    }
    double printArea()
    {
        area = this->radius  * pi * 2;
        return area;
    }
    static const double pi;
 private:
        double radius; 
        double diameter; 
        double length; 
        double area; 
};
 
int main()
{       
    locale::global(locale("rus"));   
        double radius;
    cout << "Введите радиус" << endl;
        cin >> radius;
        circle One(radius);
    const double circle::pi = 3.14159265;
    cout << One.printArea();
 
        system("PAUSE");
        return 0;
}
0
636 / 219 / 64
Регистрация: 03.11.2009
Сообщений: 488
23.08.2011, 22:11 38
TBIKC, потому что у вас значение pi-члена класса не устанавливается
напишите в вычисление площади вот так вот,зачем вам поле pi в классе?
C++
1
2
3
4
5
double printArea()
        {
                area = radius*radius  * 3.1415;
                return area;
        }
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
23.08.2011, 22:13 39
TBIKC, не, вот это
C++
1
const double circle::pi = 3.14159265;
должно быть не в main, а между main и классом.
1
web dev
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
23.08.2011, 22:16  [ТС] 40
ДА ДА ДА!! Грацио
Вот проблемная строчка была( ну точнее уже не проблемная )
area = this->radius * radius * 3.14;

Спасибо огромное, не могу нажать + спасибо ( лимит )

Добавлено через 50 секунд
Работает, спасибо, а почему так ?
0
23.08.2011, 22:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.08.2011, 22:16
Помогаю со студенческими работами здесь

Дана площадь круга S. Найти его диаметр D и длину окружности L
Дана площадь круга S. Найти его диаметр D и длину окружности L.

Дан диаметр круга, найдите его площадь и длину окружности
Дан диаметр круга, найдите его площадь и длину окружности

Зная радиус, диаметр или длину окружности вычислить площадь круга
2) Пусть элементами круга является радиус (первый элемент) , диаметр (второй элемент) и длина...

Дана площадь S круга. Найти его диаметр D и длину L окружности, ограничивающей этот круг
Добрый день, форумчане. Помогите написать задачку в С++, а выглядит она следующим образом &quot;Дана...


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

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

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