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

задача на использование классов

27.04.2023, 21:15. Показов 436. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите,пожалуйста
я не могу разобраться.. правильно ли я все делаю...

задание:
Кликните здесь для просмотра всего текста

Определить тип TimeFrame - перечисление(enum) со значениями Year, TwoYears, Long.
Определить класс Paper, который имеет три открытых автореализуемых свойства, доступных для чтения и записи:
• свойство типа string, в котором хранится название публикации; • свойство типа Person для автора публикации;
• свойство типа DateTime c датой публикации.
В классе Paper определить
• конструктор c параметрами типа string, Person, DateTime для
инициализации всех свойств класса;
• конструктор без параметров, инициализирующий все свойства класса значениями по умолчанию;
некоторыми
• перегруженную(override) версию виртуального метода string ToString() для формирования строки со значениями всех полей класса.
Определить класс ResearchTeam, который имеет
• закрытое поле типа string c названием темы исследований;
• закрытое поле типа string с названием организации;
• закрытое поле типа int – регистрационный номер;
• закрытое поле типа TimeFrame для информации о продолжительности исследований;
• закрытое поле типа Paper*+, в котором хранится список публикаций. В классе ResearchTeam определить конструкторы:
• конструктор c параметрами типа string, string, int, TimeFrame для инициализации соответствующих полей класса;
• конструктор без параметров, инициализирующий поля класса значениями по умолчанию.
В классе ResearchTeam определить свойства c методами get и set:
• свойство типа string для доступа к полю с названием темы исследований; • свойство типа string для доступа к полю с названием организации;

• свойство типа int для доступа к полю с номером регистрации;
• свойство типа TimeFrame для доступа к полю с продолжительностью
исследований;
• свойство типа Paper*+ для доступа к полю со списком публикаций по теме исследований.
В классе ResearchTeam определить
• свойство типа Paper ( только с методом get), которое возвращает ссылку на публикацию с самойпозднейдатойвыхода;еслисписокпублик ацийпустой, свойствовозвращаетзначение null;
•индексаторбулевскоготипа(толькосметодом get)соднимпараметром типа TimeFrame; значение индексатора равно true, если значение поля с информацией о продолжительностиисследованийсовпадаетсо значением индекса,иfalseвпротивном случае;
• метод void AddPapers ( params Paper[] ) для добавления элементов в список публикаций;
•перегруженнуюверсиювиртуальногометодаst ringToString()для формирования строки со значениями всех полей класса, включая список публикаций;
• виртуальный метод string ToShortString(), который формирует строку со значениями всех полей класса без списка публикаций.
В методе Main()
1. Создать один объект типа ResearchTeam, преобразовать данные
в текстовый вид с помощью метода ToShortString() и вывести данные.
2. Вывести значения индексатора для значений индекса TimeFrame.Year, TimeFrame.TwoYears, TimeFrame.Long.
3. ПрисвоитьзначениявсемопределеннымвтипеRe searchTeamсвойствам, преобразовать данные в текстовый вид с помощью метода ToString() и вывести данные.
4. С помощью метода AddPapers (params Paper *+) добавить элементы в список публикаций и вывести данные объекта ResearchTeam.
5. Вывести значение свойства, которое возвращает ссылку на публикацию с самой поздней датой выхода;
6. Сравнить время выполнения операций с элементами одномерного, двумерного прямоугольного и двумерного ступенчатого массивов с одинаковым числом элементов типа Paper.



класс person:

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp2
{
    internal class Person
    {
        //закрытые поля
        private string name;
        private string surname;
        private DateTime Dborn;
 
        //конктрукторы
 
        public Person(string name, string surname, DateTime Dborn) //с параметром 
        {
            this.name = name;
            this.surname = surname;
            this.Dborn = Dborn;
            
        }
 
        public Person() //без параметров
        { }
 
        //свойство с методами get и set;
        private string pername;
        public string Name
        {
            get
            {
                return name;
 
            }
            set
            {
                name = value;
            }
        }
 
        private string persurname;
        public string Surname
        {
            get
            {
                return surname;
 
            }
            set
            {
                surname = value;
            }
        }
 
        public override string ToString()
        {
            return string.Format("{0} {1}\nDate of birth: {2}", name, surname, Dborn);
        }
 
        //Виртуальный метод string ToShortString(), который возвращает строку, содержащую только имя и фамилию.
        public string ToShortString()
        {
            return "\n" + "Имя: " + name + "\n" + "Фамилия: " + surname;
        }
    }
 
 
}
класс Paper

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
public string Publication { get; private set; }   // свойство типа string , в котором хранится название публикации
        public string Author { get; private set; }   // свойство типа Person для автора публикации
        public DateTime PublishDate { get; private set; }  //DateTime Data { get; set; }   // свойство типа DateTime c датой публикации
 
 
        //конструктор c параметрами типа string, Person, DateTime для инициализации всех свойств класса;
        public Paper(string pub, string author, DateTime date)
        {
            Publication = pub;
            Author = author;
            PublishDate = date;
        }
 
        // конструктор без параметров, инициализирующий все свойства класса некоторыми значениями по умолчанию
        public Paper() : this("WarandWorld", "Lolstoy", new DateTime(1889, 7, 1)) { }
 
        public override string ToString()
        {
            return "\nNameP=" + Publication.ToString() + "\nAuthor=" + Author.ToString() + "\nData=" + PublishDate.ToShortDateString();
            //  "\nlist_publication=" + string.Join(",", Papers.Select(p => p.Publication));
        }
         
        public Paper(string publication, Person person, DateTime time)
        {
            Publication = publication;
            Time = time;
        }
        public string publication;
 
        public DateTime Time;
    }
}

class researchteam
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
namespace ConsoleApp2
{
   enum TimeFrame { Year, TwoYears, Long }
    internal class ResearchTeam : List<Paper>
    {
        
        private string title;
        private string nameorg;
        private int number;
        private TimeFrame last;
        private List<Paper> publications = new List<Paper>() { new Paper("pub_1","kol", new DateTime(1881, 6, 2)),
              new Paper("pub_2","mol" ,new DateTime(1883, 6, 2)), new Paper("pub_3", "lop",new DateTime(1885, 6, 2)) };
        
 
        public ResearchTeam(string title, string nameorg, int number, TimeFrame last)
        {
            this.title = title;
            this.nameorg = nameorg;
            this.number = number;
            this.last = last;
        }
 
        public ResearchTeam()
 
        {
            this.title = "HiWorld";
            this.nameorg = "Marry";
            this.number = 1000;
            this.last = new TimeFrame();
          
        }
                
 
        public String Title
        {
            get {
                return title;
            }
            set
            {
                title = value;
            }
        }
 
 
        public string Nameorg
        {
        get
            {
                return nameorg;
            }
            set
            {
                nameorg = value;
            }
        }
 
 
        int Number
        {
            get
            {
                return number;
            }
            set
            {
                number = value;
            }
        }
 
        TimeFrame Last
        {
            get
            {
                return last;
            }
            set
            {
                last = value;
            }
        }
 
        public List<Paper> pub //??
        {
            get
            {
 
                return publications;
            }
 
            set
            {
                publications = value;
            }
        }
 
        //перед мейном свойство типа Paper ( только с методом get),
        //которое возвращает ссылку на публикацию с самой поздней датой выхода;
        //если список публикаций пустой, свойство возвращает значение nu
 
        private Paper lastest;
        internal IEnumerable<Paper> list; /*что-то для предпоследней функции */
 
        Paper  Lastest
        {
            get{
                if (publications.Count == 0)
                {
                    return null;
                }
                else
                {
                    Paper lastest = publications[publications.Count - 1];
                    return lastest;
                }
                
            }
        }
 
        //индексатор булевского типа(только с методом get) с одним параметром типа TimeFrame; 
        //значение индексатора равно true, если значение поля с информацией о продолжительности
        //исследований совпадает со значением индекса, и false в противном случае; 
 
        public bool this[TimeFrame last]
        {
            get
            {
                if (this.Last == last)
                    return true;
                return false;
 
            }
        }
 
    //метод void AddPapers(params Paper[] )  для добавления элементов в список публикаци
    public void AddPapers(params Paper[] papers)
        {
            if (publications == null)
            {
                publications = new List<Paper>();
            }
            publications.AddRange(papers);
        }
 
 
        //Gерегруженную версию виртуального метода string ToString() для фор-мирования строки со значениями всех полей класса, включая список пуб-ликаций
        public override string ToString()
        {
            return string.Format("\ntitle: {0}\nnameorg: {1}\nnumber: {2}\nlast: {3}\npublications: {4} ", title, nameorg, number, last ,publications);
        }
 
        //Виртуальный метод string ToShortString(), который формирует строку со значениями всех полей класса без списка публикаций
        public string ToShortString() // виртуальный метод string ToShortString(), который формирует строку со значениями всех полей класса без списка публикаций.
        {
            return string.Format("\\ntitle: {0}\nnameorg: {1}\nnumber: {2}\nlast:: {3}\n", title, nameorg, number, last);
        }
 
    }
}

мой main

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
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
 
           {
            Paper stdl = new Paper();
            Person std = new Person();
 
            //1.Преобразовать данные в текстовый вид с помощью метода ToShortString() и вывести данные
            ResearchTeam team = new ResearchTeam();
      
            Console.WriteLine(team.ToShortString()); //Преобразовать данные в текстовый вид с помощью метода ToShortString() и вывести данные
 
            //3.Присвоить значения всем определенным в типе ResearchTeam свойствам,преобразовать данные в текстовый вид с помощью метода Tostring и вывести данные 
 
            Console.WriteLine(team.ToString());
 
            //2/Вывести значение индексатора для значений индекса TimeFrameYear,TimeFrame.TwoYears,TimeFrame.Long
            Console.WriteLine(team[TimeFrame.Year]);
            Console.WriteLine(team[TimeFrame.TwoYears]);
            Console.WriteLine(team[TimeFrame.Long]);
 
 
            //4.С помощью метода AddPapers(params Paper *+) добавить элементы в список публикаций и вывести данные объекта ResearchTeam 
 
            team.AddPapers(new Paper("Title3", new Person("Author3", "lklkj", new DateTime(2010, 1, 1)), new DateTime(2010, 1, 1)));
            Console.WriteLine(team.ToString());
 
 
            //5.Вывести значение свойств,которое возвращает ссылку на публикацию с самой поздней датой выхода
 
            foreach (Paper paper in team.lastest)
            {
                Console.WriteLine(paper.Publication);
                Console.WriteLine(paper.Time.ToShortDateString());
            }
            Console.WriteLine(team.LastestPaper);
 
            //foreach (ResearchTeam publications in team.Paper)
            //{
            //    Console.WriteLine(lastest.publications);
            //    Console.WriteLine(paper.Time.ToShortDateString());
            //}
 
            //Console.WriteLine(team.lastest) ;
 
 
 
            //6.Сравнить время выполнения операций с элементами одномерного, двумерного прямоугольного и двумерного ступенчатого массивов с одинаковым числом элементов типа Paper.
            var linearArray = new Paper[1000000];
            var rectArray = new Paper[1000, 1000];
            var jaggedArray = new Paper[1000][];
 
            for (int i = 0; i < jaggedArray.Length; i++)
                jaggedArray[i] = new Paper[1000];
 
            //test1
            var sw = Stopwatch.StartNew();
 
            for (int i = 0; i < 1000000; i++)
                linearArray[i] = null;
 
            sw.Stop();
            Console.WriteLine(sw.Elapsed);
 
            //test2
            sw = Stopwatch.StartNew();
 
            for (int i = 0; i < 1000; i++)
                for (int j = 0; j < 1000; j++)
                    rectArray[i, j] = null;
 
            sw.Stop();
            Console.WriteLine(sw.Elapsed);
 
            //test3
            sw = Stopwatch.StartNew();
 
            for (int i = 0; i < 1000; i++)
                for (int j = 0; j < 1000; j++)
                    jaggedArray[i][j] = null;
 
            sw.Stop();
            Console.WriteLine(sw.Elapsed);
 
            Console.ReadKey();
 
 
        } 
    }
}
в main не могу разобраться с 5 и 6 пунктом в задаче,но может и остальные написаны не так
помогите,пожалуйста


вот ,что в консоли на данный момент
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.04.2023, 21:15
Ответы с готовыми решениями:

Задача на использование классов и объектов. ошибка
Здравствуйте, помогите, пожалуйста, с ошибкой. Задача: Задача на использование классов и объектов, в которых данные описаны в качестве...

Задача на использование классов
Добрый вечер форумчане! Мне задали написать программку, вот условие: Поля дaнных клаccа должны быть зaкрытыми, а доступ к ним должен...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

1
 Аватар для iLinks
800 / 458 / 237
Регистрация: 03.01.2017
Сообщений: 1,339
27.04.2023, 23:40
Лучший ответ Сообщение было отмечено YlT как решение

Решение

Что-то типо того:
Кликните здесь для просмотра всего текста
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
class Person
{
    private string name;
    public string Name { get => name; set => name = value; }
    private string surname;
    public string Surname { get => surname; set => surname = value; }
    private DateTime Dborn;
    public Person(string name, string surname, DateTime Dborn)
    {
        this.name = name;
        this.surname = surname;
        this.Dborn = Dborn;
    }
    public Person() { }
    public override string ToString() => $"{ToShortString()}; Дата рождения: {Dborn}";
    public string ToShortString() => $"Имя: {Name}; Фамилия: {Surname}";
}
class Paper
{
    public string Publication { get; private set; }
    public Person Author { get; private set; }
    public DateTime PublishDate { get; private set; }
    public Paper(string publication, Person author, DateTime publishDate)
    {
        Publication = publication;
        Author = author;
        PublishDate = publishDate;
    }
    public Paper() : this("WarandWorld", new Person("Lolstoy", string.Empty, new DateTime(1870, 1, 1)), new DateTime(1889, 7, 1)) { }
    public override string ToString() => $"Название публикации: {Publication}; Автор: {Author}; Дата публикации: {PublishDate}";
}
enum TimeFrame { Year, TwoYears, Long }
class ResearchTeam
{
    public bool this[TimeFrame iLast] => iLast == Last;
    private string title;
    public string Title { get => title; set => title = value; }
    private string nameorg;
    public string NameOrg { get => nameorg; set => nameorg = value; }
    private int number;
    public int Number { get => number; set => number = value; }
    private TimeFrame last;
    public TimeFrame Last { get => last; set => last = value; }
    private List<Paper> papers = new List<Paper>();
    public List<Paper> Papers { get => papers; set => papers = value; }
    public Paper? Lastest => Papers.OrderBy(p => p.PublishDate).LastOrDefault();
    public ResearchTeam(string title, string nameorg, int number, TimeFrame last)
    {
        this.title = title;
        this.nameorg = nameorg;
        this.number = number;
        this.last = last;
    }
    public ResearchTeam() : this("HiWorld", "Marry", 1000, new TimeFrame()) { }
    public void AddPapers(params Paper[] papers_) => Papers.AddRange(papers_);
    public override string ToString() => $"{ToShortString()}\nСписок публикаций:\n{string.Join("\n", Papers)}";
    public virtual string ToShortString() => $"Тема исследования: {Title};\n" +
        $"Название организации: {NameOrg};\n" +
        $"Регистрационный номер: {Number}\n" +
        $"Продолжительность исследований: {Last}";
}
private static void Main(string[] args)
{
    //1
    ResearchTeam team = new ResearchTeam();
    Console.WriteLine(team.ToShortString());
    //2
    bool year = team[TimeFrame.Year];
    bool twoYears = team[TimeFrame.TwoYears];
    bool long_ = team[TimeFrame.Long];
    //3 надо свойства присвоить
    Console.WriteLine(team.ToString());
    //4
    team.AddPapers(new Paper("Title3", new Person("Author3", "lklkj", new DateTime(2010, 1, 1)), new DateTime(2010, 1, 1)));
    Console.WriteLine(team.ToString());
    //5
    Console.WriteLine(team.Lastest);
    //6
    var linearArray = new Paper[1000000];
    var rectArray = new Paper[1000, 1000];
    var jaggedArray = Enumerable.Range(0, 1000).Select(a => new Paper[1000]).ToArray();
    //хз что за операции там надо сравнивать
    Console.ReadLine();
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2023, 23:40
Помогаю со студенческими работами здесь

Использование классов
Составить программу для объявления и использования данных типа класс согласно индивидуальному заданию, Базовый (транспортное средство) ...

Использование классов
Разработать заголовочный файл, содержащий описание соответствующего класса, функции и операторы. Описание функций-членов класса разместить...

Использование классов
Класс Члены класса Методы Операторы перегрузки Исходные данные Матрица Размерность ...

Использование классов
Не хочет запускаться, помогите найти ошибку #include &lt;iostream&gt; #define N 5 using namespace std; class electronic_store { ...

Использование классов
Здравствуйте господа программисты. Помогите мне пожалуста. В Курсовой есть такое задание: &quot;Создать телефонную книгу&quot; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
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