Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/68: Рейтинг темы: голосов - 68, средняя оценка - 4.56
2 / 3 / 0
Регистрация: 20.10.2014
Сообщений: 24

Создать классы Point и Figure в консоли

15.03.2015, 04:07. Показов 13546. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане, получил домашнее задание:
Создайте проект по шаблону Console Application .
Требуется: Создать классы Point и Figure .
Класс Point должен содержать два целочисленных поля и одно строковое поле.
Создать три свойства с одним методом доступа get .
Создать пользовательский конструктор, в теле которого проинициализируйте поля значениями аргументов.
Класс Figure должен содержать конструкторы, которые принимают от 3 -х до 5 -ти аргументов типа Point .
Создать два метода : double LengthSide ( Point A , Point B ) , который рассчитывает длину стороны многоугольника; void PerimeterCalculator() , который рассчитывает периметр многоугольника.
Написать программу, которая выводит на экран название и периметр многоугольника .
Вот моя прожка, выдает ошибку после инциализации первой точки.
Прокомментируйте, пожалуйста, что не так, и как лучше?

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
class Point
    {
        string name;
        int x, y;
        public int X
        {
            get
            {
                return x;
            }
        }
        public int Y
        {
            get
            {
                return y;
            }
        }
        public string Name
        {
            get
            {
                return name;
            }
        }
        public Point()
            : this("", 0, 0) { }
        public Point(string name, int x, int y)
        {
            Console.WriteLine("Enter a letter of Point:");
            this.name = Console.ReadLine();
            Console.WriteLine("Enter X:");
            this.x = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter Y:");
            this.y = int.Parse(Console.ReadLine());
        }        
    }
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
class Figure
    {
        int number;
        Point[] points;
        string name;
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
        public void InitializeFigure()
        {
            Console.WriteLine("enter number of verticles of your figure");
            number = int.Parse(Console.ReadLine());
            for (int i = 0; i < number; i++)
            {
                points[i] = new Point();                
            }
 
        }
        public double LengthSide(Point a, Point b)
        {
            return Math.Sqrt(Math.Pow(a.X - b.X, 2) + Math.Pow(a.Y - b.Y, 2));
        }
        public double CalculatePerimeter(params Point[]points)
        {
            double perimeter = 0;
            for(int i = 1; i<points.Length;i++)
            {
                perimeter += this.LengthSide(points[i-1], points[i]);
            }
            perimeter += this.LengthSide(points[0], points[points.Length]);
            return perimeter;
        }
        public Figure(string name)
        {
            InitializeFigure();
        }                                  
    }
C#
1
2
3
4
5
6
7
8
9
class Program
    {
        static void Main(string[] args)
        {
            Figure cube = new Figure("cube");
            Console.WriteLine(cube.CalculatePerimeter());
            Console.ReadKey();
        }
    }
2
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.03.2015, 04:07
Ответы с готовыми решениями:

Классы Point и Figure в консольном приложении
Создать клас Point и Figure. Клас Point должен содержать два целочисельных поля и одно строковое поле. Создать три свойства с одним...

Создать класс Point (точка). На его основе создать классы ColoredPoint и Line
Необходимо: Создать класс Point (точка). На его основе создать классы ColoredPoint и Line (линия). На основе класса Line создать...

Создать класс Point (точка). На его основе создать классы ColoredPoint и Line (линия)
Задания на наследование. Создать класс Point (точка). На его основе создать классы ColoredPoint и Line (линия). В классах описать...

3
117 / 118 / 52
Регистрация: 19.12.2014
Сообщений: 612
15.03.2015, 06:51
Лучший ответ Сообщение было отмечено inatoff как решение

Решение

Кое что изменил, должно работать
Кликните здесь для просмотра всего текста
Ну во первых, вот это
Цитата Сообщение от inatoff Посмотреть сообщение
C#
1
2
3
4
5
6
Console.WriteLine("enter number of verticles of your figure");
number = int.Parse(Console.ReadLine());
 for (int i = 0; i < number; i++)
{
points[i] = new Point(); 
}
нужно изменить вот так
C#
1
2
3
4
5
6
7
Console.WriteLine("enter number of verticles of your figure");
            number = int.Parse(Console.ReadLine());
            points = new Point[number];
            for (int i = 0; i < points.Length; i++)
            {
                points[i] = new Point();
            }
теперь здесь
Цитата Сообщение от inatoff Посмотреть сообщение
C#
1
public double CalculatePerimeter(params Point[]points)
меняем на
C#
1
public double CalculatePerimeter()
И после изменить
Цитата Сообщение от inatoff Посмотреть сообщение
C#
1
2
3
4
5
6
7
double perimeter = 0;
for(int i = 1; i<points.Length;i++)
{
perimeter += this.LengthSide(points[i-1], points[i]);
}
perimeter += this.LengthSide(points[0], points[points.Length]);
return perimeter;
Чтобы стало вот так
C#
1
2
3
4
5
6
7
8
9
10
public double CalculatePerimeter()
        {
            double perimeter = 0;
            for (int i = 1; i <points.Length; i++)
            {
                perimeter += this.LengthSide(points[i - 1], points[i]);
            }
            perimeter += this.LengthSide(points[0], points[points.Length-1]);
            return perimeter;
        }
3
1 / 1 / 0
Регистрация: 27.04.2015
Сообщений: 5
23.08.2016, 23:30
Здраствуйте, уважаемые форумчане.
Подскажите, пожалуйста, что мы делаем этой строчкой в методе CalculatePerimeter:
Цитата Сообщение от lokilo Посмотреть сообщение
perimeter += this.LengthSide(points[0], points[points.Length-1]);
, а то я не могу понять, зачем эта строчка нужна.
0.50
296 / 259 / 107
Регистрация: 26.10.2012
Сообщений: 809
24.08.2016, 07:59
Прибавляем к периметру длину отрезка от первой до последней точки фигуры.
Строчкой выше к периметру прибавлялись все отрезки фигуры кроме этого.
1.50
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.08.2016, 07:59
Помогаю со студенческими работами здесь

Создать класс Point (точка). На его основе создать классы ColoredPoint и Line (линия)
На основе класса Line создать классы ColoredLine и PolyLine (многоугольник). В классах описать следующие элементы: □ конструкторы с...

Создать класс Point (точка). На его основе создать классы ColoredPoint и Line (линия)
всем привет! помогите пожалуйста с решением задачи. вот задание: &quot;Создать класс Point (точка). На его основе создать классы...

Создать класс Point (точка) На его основе создать классы ColoredPoint и Line (линия)
Помогите пожалуйста, сделать лабу :cry: Лабораторная работа 9. Наследование В программах требуется описать базовый класс (возможно,...

Создать абстрактный класс Figure
Здравствуйте. Помогите пожалуйста решить задание. Я ещё не изучал абстрактные классы, а задание нужно сделать.Создать абстрактный класс...

Создать абстрактный базовый класс Figure
Создать абстрактный базовый класс Figure (фигура) с виртуальными методами вычисления площади и периметра. Создать производные классы:...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru