5 / 5 / 1
Регистрация: 02.05.2015
Сообщений: 137
1

Помогите найти ошибку в классе Circle

13.12.2015, 16:31. Показов 1333. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание: Описать класс “Окружность”, методами которого представить перегрузку конструкторов. В основной программе продемонстрируйте работу с перегруженными конструкторами.
Вопрос 1. Ответ выводится на экран только если Run в конструкторе, как его переписать, чтобы убрать из конструктора.
Вопрос 2. Как в ToString выводить округленное значение типа {0:0.00}
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
namespace klass_circle
{
    public class Circle
    {
        public double a, b, r;
        public double Сircumference;
        public double Area;
        public Circle(double a, double b, double r)
        {
            this.a = a;
            this.b = b;
            this.r = r;
            Run();
        }
        public Circle(double r)
        {
            this.a = 0;
            this.b = 0;
            this.r = r;
            Run();
        }
        public void Run()
        {
            Сircumference = 2 * r * Math.PI;
            Area = Math.PI * r * r;
        }
        public override string ToString()
        {
            if ((a == 0) && (b == 0)) { return "Уравнение x^2 + y^2 = " + r * r + "; L = " + Сircumference + "; S = " + Area; }
            { return "Уравнение (x - " + a + ")^2 + (y - " + b + ")^2 = " + r * r + "; L = " + Сircumference + "; S = " + Area; }                
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Circle n = new Circle(2, 4, 3);
            Console.WriteLine(n.ToString());
            Circle l = new Circle(2);
            Console.WriteLine(l.ToString());
            Console.ReadLine();
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2015, 16:31
Ответы с готовыми решениями:

Помогите найти ошибку в классе рисования точки
Пробовал нарисовать точку с помощью класса TDot Вроде всё правильно, но точка не рисуется...

Помогите найти ошибку. Расчёт площади фигур реализован в виде метода в классе "фигура" и в его потомках
При нажатие на клавишу button1 ,посчитанные значения должны вывестись в Memo1. Посчитать должно...

Создать в классе Circle метод, проверяющий, касаются ли окружности в одной точке
Создайте в классе Circle метод, проверяющий, касаются ли окружности в одной точке. Учтите, что...

Создать в классе Circle метод, вычисляющий расстояние между центрами двух окружностей
Короче вот такой код class Circle { public double x; // абсцисса центра public double y;...

5
27 / 55 / 19
Регистрация: 18.08.2014
Сообщений: 329
13.12.2015, 16:41 2
Адэля,
1) писать метод расширения например
2) https://msdn.microsoft.com/en-... awy9k.aspx
0
Эксперт .NET
5868 / 4745 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
13.12.2015, 16:51 3
Адэля,
Вообще не вижу смысла расчет длины окружности и площади выносить в отдельный метод, тем более что в этом методе просто инициализируются два поля класса. Может лучше сделать так:

C#
1
2
3
4
5
6
7
8
9
10
11
public Circle(double a, double b, double r) : this(r)
{
    this.a = a;
    this.b = b;
}
public Circle(double r)
{
    this.r = r;
    Сircumference = 2 * r * Math.PI;
    Area = Math.PI * r * r;
}
0
5 / 5 / 1
Регистрация: 02.05.2015
Сообщений: 137
13.12.2015, 16:59  [ТС] 4
Мы классы пишем ток один месяц, что такое метод расширения?

Добавлено через 6 минут
Спасибо, исправила, осталось округлить.
0
Эксперт .NET
5868 / 4745 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
13.12.2015, 17:58 5
Лучший ответ Сообщение было отмечено Адэля как решение

Решение

Адэля,
Еще вопрос, зачем делать зависимые поля? Т.е. поля Сircumference и Area зависящие от поля r не нужны совсем.
Лучше сделать 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
public class Circle
{
    double a, b, r;
 
    public Circle(double a, double b, double r)
        : this(r)
    {
        this.a = a;
        this.b = b;
    }
 
    public Circle(double r)
    {
        this.r = r;
    }
 
    public double Сircumference
    {
        get { return 2 * r * Math.PI; }
    }
 
    public double Area
    {
        get { return Math.PI * r * r; }
    }
 
    public double GetСircumference()
    {
        return 2 * r * Math.PI;
    }
 
    public double GetArea()
    {
        return Math.PI * r * r;
    }
 
    public override string ToString()
    {
        if ((a == 0) && (b == 0)) { return "Уравнение x^2 + y^2 = " + r * r + "; L = " + Сircumference + "; S = " + Area; }
        { return "Уравнение (x - " + a + ")^2 + (y - " + b + ")^2 = " + r * r + "; L = " + Сircumference + "; S = " + Area; }
    }
}
Добавлено через 46 минут
Цитата Сообщение от Адэля Посмотреть сообщение
Как в ToString выводить округленное значение типа {0:0.00}
Воспользоваться методом string.Format. Например:
C#
1
return string.Format("Уравнение x^2 + y^2 = {0}; L = {1,4:f2}; S = {2,4:f2}", r * r, Сircumference, Area);
1
5 / 5 / 1
Регистрация: 02.05.2015
Сообщений: 137
13.12.2015, 18:16  [ТС] 6
Да, спасибо большое. Я уже это поняла и исправила. Ответ исчерпывающий.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2015, 18:16
Помогаю со студенческими работами здесь

Найти ошибку в классе
почему не работает? весь код который идет после этого класа не работает тоже. class factorial {...

Найти ошибку, матрица в классе.
Приветствую всех, кто заглянул в топик. Помогите, пожалуйста, найти ошибку. Matrix.h: #pragma...

Программа пишет ошибку!! Помогите найти ошибку
Program Summa; var i, N, M: integer; begin Writeln ('Введите значение N:'); Read (N); ...

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


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

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

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