Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 8

Создать абстрактный класс с виртуальными методами, а также с одним подклассом

09.06.2016, 20:28. Показов 1235. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание:
Создать абстрактный класс Pair (пара значений) с виртуальными методами, реализующими арифметические операции. На его основе реализовать класс Fractional (дробное). В классе Fractional вещественное число представляется в виде двух целых, в которых хранятся целая и дробная часть числа соответственно.
Наброски:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
  
abstract class Pair
    {
        public int firstnum { get; set; }
        public int secondnum { get; set; }
 
 
        public Pair(int fnum, int snum)
        {
            this.firstnum = fnum;
            this.secondnum = snum;
        }
 
        public virtual double sum()
        {
            return (firstnum + secondnum);
        }
 
        public virtual double div()
        {
            return (firstnum / secondnum);
        }
 
        public virtual double mult()
        {
            return (firstnum * secondnum);
        }
 
        public virtual double minus()
        {
            return (firstnum - secondnum);
        }
 
       class Fractional : Pair
            {
            public int Numerator { get; set; }
            public int Denominator { get; set; }
 
            public Fractional(int N, int D) : base(0, 0)
            {
                this.Numerator = N;
                this.Denominator = D;   
            }
            
            public Fractional Normalization()
            {
                return new Fractional(Numerator / GetCommonDivisor(Numerator, Denominator), Denominator / GetCommonDivisor(Numerator, Denominator));
            }
 
            private static int GetCommonDivisor(int i, int j)
            {
                i = Math.Abs(i);
                j = Math.Abs(j);
                while (i != j)
                    if (i > j) { i -= j; }
                    else { j -= i; }
                return i;
            }
 
            public override string ToString()
            {
                int iPart = Numerator / Denominator;
                if (iPart != 0)
                    return string.Format("{0} {1}", iPart, GetRest());
                else
                    return string.Format("{0}/{1}", Numerator, Denominator);
            }
            public object GetRest()
            {
                if (Numerator != Denominator)
                { return new Fractional(Numerator % Denominator, Denominator); }
                return null;
 
            }
 
           
              
            
 
        }
    }
Уже второй день пытаюсь хоть как-то довести этот класс до ума, но всё никак не получается дописать его до конца.
Помогите, пожалуйста!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.06.2016, 20:28
Ответы с готовыми решениями:

Создать абстрактный класс Point
Создать абстрактный класс Point (точка). На его основе создать классы ColoredPoint и Line. На основе класса Line создать класс ColoredLine...

Как создать абстрактный класс для геометрических фигур?
Нужно создать абстрактный клас Фигура в котором есть метод Площа и 3 класа наследника Квадрат Прямоугольник и Круг. Програма должна...

Создать класс с методами файлового менеджера
Здравствуйте. Нужна помощь. А именно создать класс файлового менеджера Причина в том что например все методы выводят на прогресс бар...

2
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
09.06.2016, 21:58
herecomesdatboi,
1) У вас нет наследования. Ну то есть оно есть, но оно формальное и бессмысленное. Ваш Fractional не должен создавать поля Numerator и Denominator. Он должен использовать поля firstnum и secondnum своего предка.

2) Ваши методы sum, div в абстрактном классе Pair - совершенно бессмысленны. Измените их сигнатуру и сделайте абстрактными. Например так:
C#
1
public abstract Pair Sum(Pair other);
3) В классе Fractional переопределите методы из Pair с модификатором override:
C#
1
2
3
4
5
6
7
        public override Pair Sum(Pair other)
        {
            var res = new Fractional();
            //складываем числа (this и other), заносим в res
            //...
            return res;
        }
4) У вас в задании написано про целую и дробную части числа (то есть подразумевается десятичная дробь). А вы похоже реализуете обыкновенные дроби (с числителем и знаменателем).
1
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 8
09.06.2016, 22:36  [ТС]
Storm23,
Похоже, что я изначально неправильно понял задание.
Спасибо за помощь, буду исправлять!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.06.2016, 22:36
Помогаю со студенческими работами здесь

Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями
Здравствуйте, пожалуйста помогите написать код к данной задаче, с таким условием: Создать абстрактный базовый класс Тройка чисел с...

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

Создать абстрактный класс Shape с двумя чисто виртуальными методами Area() и Print()
Создать абстрактный класс Shape с двумя чисто виртуальными методами Area() и Print(). Определить производные классы Square (квадрат),...

Создать абстрактный базовый класс с виртуальными методами вычисления функции y в заданной точке х
создать абстрактный базовый класс function с виртуальными методами вычисления ф-ции y=f(x) в заданной точке х и вывода результата на...

Создать абстрактный базовый класс Root (корень) с виртуальными методами вычисления корней
Здравствуйте, на завтра нужно сдать задачу, а я не знаю как решить, помогите пожалуйста Создать абстрактный базовый класс Root...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
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 На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru