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

Наследование. Дополнить программу.

05.04.2011, 20:21. Показов 2791. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать абстрактный класс Function (функция) с виртуальными методами вычисления значения функции y = f(x) в заданной точке х и вывода результата на экран. На его основе реализовать классы Ellipse, Hiperbola и Parabola.
Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.
Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
using System;
using System.Collections.Generic;
 
namespace laba10
{
    abstract class Function
    {
        abstract public void ShowResult(double arg);
        abstract public double Result(double arg);
    }
 
    sealed class Parabola : Function
    {
        public Parabola(double a, double b, double c)
        {
            this.a = a;
            this.b = b;
            this.c = c;
        }
 
        public override void ShowResult(double arg)
        {
            Console.WriteLine("Parabola({0:0.0}, {1:0.0}, {2:0.0}, {3:0.0}) = {4:0.00}", a, b, c, arg, Result(arg));
        }
 
        public override double Result(double arg)
        {
            return a * arg * arg + b * arg + c;
        }
 
        public double a;
        public double b;
        public double c;
    }
 
    sealed class Hiperbole : Function
    {
        public Hiperbole(double a, double b)
        {
            this.a = a;
            this.b = b;
        }
 
        public override void ShowResult(double arg)
        {
            Console.WriteLine("Hiperbole({0:0.0}, {1:0.0}, {2:0.0}) = {3:0.00}", a, b, arg, Result(arg));
        }
 
        public override double Result(double arg)
        {
            if (arg * arg - a * a < 0)
                throw new InvalidOperationException("Неверно заданы полуоси");
            return b / a * Math.Sqrt(arg * arg - a * a);
        }
 
        public double a; // большая и малая полуоси
        public double b;
    }
 
    sealed class Ellipse : Function
    {
        public Ellipse(double a, double b)
        {
            this.a = a;
            this.b = b;
        }
 
        public override void ShowResult(double arg)
        {
            Console.WriteLine("Ellipse({0:0.0}, {1:0.0}, {2:0.0}) = {3:0.00}", a, b, arg, Result(arg));
        }
 
        public override double Result(double arg)
        {
            if (Math.Abs(a) < 1e-8)
                throw new DivideByZeroException("Произошло деление на 0.");
            if (1 - arg * arg / a / a < 0)
                throw new InvalidOperationException("Неверно заданы полуоси.");
            return b * Math.Sqrt(1 - arg * arg / a / a);
        }
 
        public double a; // большая и малая полуоси
        public double b;
    }
 
    class Program
    {
        static void Main()
        {
            var f = new List<Function>();
 
            f.Add(new Parabola(5, -2, 0));
            f.Add(new Hiperbole(1, 2));
            f.Add(new Ellipse(10, 8));
 
            try
            {
                foreach (var i in f)
                    i.ShowResult(2);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.04.2011, 20:21
Ответы с готовыми решениями:

дополнить программу
каждый разрабатываемый класс должен как правило, содержать: скрытые поля, конструкторы с параметрами и без параметров, методы; свойства,...

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

Дополнить программу
Организуйте цикл для нахождения n раз длины и площади окружности, используя встроенную в язык программирования Pascal константу PI. %-) ...

15
11 / 11 / 2
Регистрация: 18.01.2010
Сообщений: 53
05.04.2011, 20:51
А в чём, собственно, вопрос?
0
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 44
05.04.2011, 20:57  [ТС]
Цитата Сообщение от hasys Посмотреть сообщение
А в чём, собственно, вопрос?
Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка.
дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.
0
11 / 11 / 2
Регистрация: 18.01.2010
Сообщений: 53
05.04.2011, 21:03
Я так понимаю, нужно использовать класс Series в котором будет List<E> (вместо E необходимо указать нужный для хранения тип данных). А для сохранения в файл удобнее всего использовать серелизацию.
0
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 44
05.04.2011, 21:11  [ТС]
Цитата Сообщение от hasys Посмотреть сообщение
Я так понимаю, нужно использовать класс Series в котором будет List<E> (вместо E необходимо указать нужный для хранения тип данных). А для сохранения в файл удобнее всего использовать серелизацию.
Да, что-то подобное)), только как это осуществить
0
11 / 11 / 2
Регистрация: 18.01.2010
Сообщений: 53
05.04.2011, 21:12
Что именно?
0
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 44
05.04.2011, 21:21  [ТС]
Цитата Сообщение от hasys Посмотреть сообщение
Что именно?
я думаю надо вот это
C#
1
2
3
4
var f = new List<Function>(); 
            f.Add(new Parabola(5, -2, 0));
            f.Add(new Hiperbole(1, 2));
            f.Add(new Ellipse(10, 8));
занести в класс Series. дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.
0
11 / 11 / 2
Регистрация: 18.01.2010
Сообщений: 53
05.04.2011, 21:23
В общем вот, что я набросал простенько, без обработки ошибок и сортировки, но надеюсь суть ясна
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
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
    class Series
    {
        List<Function> _functions = new List<Function>();
        
        public Function this[int index]
        {
            get
            {
                return _functions[index]; //Для просмотра свойств объектов
            }
        }
 
        public void Sort(string param)
        {
        }
 
        public void Save()
        {
            FileStream Stream = new FileStream("file.dat", FileMode.Create, FileAccess.Write);
            BinaryFormatter fmt = new BinaryFormatter();
            fmt.Serialize(Stream, this);
            Stream.Close();
        }
 
        public void Load()
        {
            FileStream Stream = new FileStream("file.dat", FileMode.Open, FileAccess.Read);
            Book bb = new Book();
            BinaryFormatter fmt = new BinaryFormatter();
            this = (Series)fmt.Deserialize(Stream);
        }
    }
0
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 44
05.04.2011, 21:39  [ТС]
Цитата Сообщение от hasys Посмотреть сообщение
В общем вот, что я набросал простенько, без обработки ошибок и сортировки, но надеюсь суть ясна
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
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
    class Series
    {
        List<Function> _functions = new List<Function>();
        
        public Function this[int index]
        {
            get
            {
                return _functions[index]; //Для просмотра свойств объектов
            }
        }
 
        public void Sort(string param)
        {
        }
 
        public void Save()
        {
            FileStream Stream = new FileStream("file.dat", FileMode.Create, FileAccess.Write);
            BinaryFormatter fmt = new BinaryFormatter();
            fmt.Serialize(Stream, this);
            Stream.Close();
        }
 
        public void Load()
        {
            FileStream Stream = new FileStream("file.dat", FileMode.Open, FileAccess.Read);
            Book bb = new Book();
            BinaryFormatter fmt = new BinaryFormatter();
            this = (Series)fmt.Deserialize(Stream);
        }
    }
вставил этот фрагмент в прогу, не работает...
0
11 / 11 / 2
Регистрация: 18.01.2010
Сообщений: 53
05.04.2011, 21:40
Цитата Сообщение от smith.gl Посмотреть сообщение
вставил этот фрагмент в прогу, не работает...
Что не работает?
0
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 44
05.04.2011, 21:43  [ТС]
Цитата Сообщение от hasys Посмотреть сообщение
Что не работает?
не распознается Book
0
11 / 11 / 2
Регистрация: 18.01.2010
Сообщений: 53
05.04.2011, 21:45
Эту строку нужно убрать совсем, она тут не нужна
0
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 44
23.04.2011, 23:39  [ТС]
Цитата Сообщение от hasys Посмотреть сообщение
Что не работает?
Возможно добавить сортировку значений функций с помощью Comparable?
0
11 / 11 / 2
Регистрация: 18.01.2010
Сообщений: 53
24.04.2011, 00:39
Да, для этого нужно реализовать интерфейс IComparable. Например так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Function : IComparable
{
   ...
   public int CompareTo(object o)
   {
      if((o as Funtcion).a != this.a)
          return (o as Funtcion).a - this.a;
      if((o as Funtcion).b != this.b;
          return (o as Funtcion).b - this.b;
      if((o as Funtcion).c != this.c;
          return (o as Funtcion).c - this.c;
      return 0;
   }
   ...
}
А потом для сортировки будет достаточно такого вызова:
C#
1
2
3
4
5
6
7
8
9
class Series
{
   ...
   public void Sort()
   {
       _functions.Sort();
   }
   ...
}
0
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 44
24.04.2011, 18:02  [ТС]
Цитата Сообщение от hasys Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
class Series
{
   ...
   public void Sort()
   {
       _functions.Sort();
   }
   ...
}


что такое _function.Sort(); ???
0
11 / 11 / 2
Регистрация: 18.01.2010
Сообщений: 53
24.04.2011, 21:50
Смотрите выше:
Цитата Сообщение от smith.gl Посмотреть сообщение
class Series
* * {
* * * * List<Function> _functions = new List<Function>();
....
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.04.2011, 21:50
Помогаю со студенческими работами здесь

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

Дополнить программу
Program Pr4; uses crt; var a:array of integer; n,i,j,k,pp,po:integer; begin clrscr; randomize; n:=15; ...

Дополнить программу
Собственно задача: найти все простые числа на отрезке. Если их нет на отрезке - сообщить об этом. var i,j,f,m:longint; begin ...

Дополнить программу
#include &lt;iostream&gt; class Calories { public: void Power(); void Display(); void Read(); ...

Дополнить программу
Доделать программу,которая решает интеграл методом трапеций.(формула приложена в документе) clear all; a=1.2; b=3; x=a:0.1:b; for...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru