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

Cравнить время, необходимое для выполнения операций с элементами массивов

12.10.2015, 09:56. Показов 12134. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можете помочь с работой
Вот задание
Задание
Определить класс Person, который имеет
закрытое поле типа string, в котором хранится имя; 
закрытое поле типа string, в котором хранится фамилия; 
закрытое поле типа System.DateTime для даты рождения.
В классе Person определить конструкторы:
конструктор c тремя параметрами типа string, string, DateTime для инициализации всех полей класса;
конструктор без параметров, инициализирующий все поля класса некоторыми значениями по умолчанию.
В классе Person определить свойства c методами get и set: 
свойство типа string для доступа к полю с именем; 
свойство типа string для доступа к полю с фамилией; 
свойство типа DateTime для доступа к полю с датой рождения; 
свойство типа int c методами get и set для получения информации(get) и изменения (set) года рождения в закрытом поле типа DateTime, в котором хранится дата рождения.
В классе Person определить
перегруженную (override) версию виртуального метода string ToString() для формирования строки со значениями всех полей класса; 
виртуальный метод string ToShortString(), который возвращает строку, содержащую только имя и фамилию.
Вариант 1. Требования к программе
Определить тип Education - перечисление(enum) со значениями Spe******t, Вachelor, SecondEducation.
Определить класс Exam, который имеет три открытых автореализуемых свойства, доступных для чтения и записи: свойство типа string, в котором хранится название предмета; 
свойство типа int, в котором хранится оценка; 
свойство типа System.DateTime для даты экзамена.
В классе Exam определить: 
конструктор с параметрами типа string, int и DateTime для инициализации всех свойств класса; 
конструктор без параметров, инициализирующий все свойства класса некоторыми значениями по умолчанию;  перегруженную(override) версию виртуального метода string ToString() для формирования строки со значениями всех свойств класса.
Определить класс Student, который имеет 
закрытое поле типа Person, в котором хранятся данные студента; 
закрытое поле типа Education для информации о форме обучения; 
закрытое поле типа int для номера группы; 
закрытое поле типа Exam *+ для информации об экзаменах, которые сдал студент.
В классе Student определить конструкторы:
конструктор c параметрами типа Person, Education, int для инициализации соответствующих полей класса;  конструктор без параметров, инициализирующий поля класса значениями по умолчанию.
В классе Student определить свойства c методами get и set:
свойство типа Person для доступа к полю с данными студента; 
свойство типа Education для доступа к полю с формой обучения; 
свойство типа int для доступа к полю с номером группы; 
свойство типа Exam [] для доступа к полю со списком экзаменов.
В классе Student определить  свойство типа double ( только с методом get), в котором вычисляется средний балл как среднее значение оценок в списке сданных экзаменов; 
индексатор булевского типа (только с методом get) с одним параметром типа Education;
значение индексатора равно true, если значение поля с формой обучения студента совпадает со значением индекса, и false в противном случае; 
метод void AddExams ( params Exam [] ) для добавления элементов в список экзаменов; 
перегруженную версию виртуального метода string ToString() для формирования строки со значениями всех полей класса, включая список экзаменов; 
виртуальный метод string ToShortString(), который формирует строку со значениями всех полей класса без списка экзаменов, но со значением среднего балла.
В методе Main() 1.
Создать один объект типа Student, преобразовать данные в текстовый вид с помощью метода ToShortString() и вывести данные.
2. Вывести значения индексатора для значений индекса Education.Spe******t, Education.Bachelor и Education.SecondEducation.
3. Присвоить значения всем определенным в типе Student свойствам, преобразовать данные в текстовый вид с помощью метода ToString() и вывести данные.
4. C помощью метода AddExams( params Exam [] ) добавить элементы в список экзаменов и вывести данные объекта Student, используя метод ToString().
5. Сравнить время выполнения операций с элементами одномерного, двумерного прямоугольного и двумерного ступенчатого массивов с одинаковым числом элементов типа Exam.

Массив
Cравнить время, необходимое для выполнения операций с элементами одномерного, двумерного прямоугольного и двумерного ступенчатого массивов с одинаковым числом элементов. Для этого в методе Main() создать  одномерный массив;  двумерный прямоугольный массив;  двумерный ступенчатый массив. Тип элементов массивов зависит от варианта лабораторной работы. Массивы должны иметь одинаковое число элементов. Если число строк в двумерном прямоугольном массиве равно nrow, а число столбцов ncolumn, то одномерный массив должен содержать nrow*ncolumn элементов, в двумерном ступенчатом массиве общее число элементов также должно быть равно nrow*ncolumn.
2
Значения nrow и ncolumn вводятся в процессе работы приложения в виде одной строки с разделителями. В приглашении, которое получает пользователь, должна быть информация о том, какие символы можно использовать как разделители, число разделителей должно быть больше 1. С помощью метода Split класса System.String приложение разбирает введенную пользователем текстовую строку с информацией о числе строк и числе столбцов двумерного массива и присваивает значения переменным, которые содержат значения nrow и ncolumn. В первой лабораторной работе не требуется обрабатывать ошибки ввода, предполагается, что пользователь правильно ввел данные. Приложение распределяет память для всех массивов и инициализирует элементы массивов. Для инициализации элементов можно использовать конструктор без параметров. Для всех элементов массивов выполняется одна и та же операция, например, присваивается значение одному из свойств, определенных для элементов массива. В лабораторной работе требуется сравнить время выполнения этой операции для одномерного, двумерного прямоугольного и двумерного ступенчатого массивов с одинаковым числом элементов. Для измерения времени выполнения операций можно использовать свойство Environment.TickCount. Cтатическое свойство TickCount класса Environment имеет тип int, использует информацию системного таймера и содержит время в миллисекундах, которое прошло с момента перезагрузки компьютера. Чтобы получить время выполнения некоторого блока кода, необходимо вызвать Environment.TickCount непосредственно перед блоком и сразу же после последнего оператора блока и взять разность значений. В блоке кода, для которого измеряется время, не должно быть операций распределения памяти для массивов, инициализации элементов массивов и операций вывода данных на консоль. Блоки кода должны содержать только операции с элементами массива. Вычисленные значения времени выполнения операций для трех типов массивов, а также число строк nrow и столбцов ncolumn выводятся на консоль. Вывод должен быть подписан, т.е. вывод должен содержать информацию о том, какому типу массива отвечает выведенное значение.

Вот мой код
Код

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace laba1
{
    class Person
    {
        private string name;
        private string secondname;
        private System.DateTime DateOfBirth;
 
        public Person(string name, string secondname, System.DateTime birthday)
        {
            this.name = name;
            this.secondname = secondname;
            this.DateOfBirth = birthday;
        }
        public Person()
        {
            this.name = "Данил";
            this.secondname = "Дегтярев";
            this.DateOfBirth = new DateTime(1996, 11, 10);
        }
        public string NamePro
        {
            get { return name; }
            set { name = value; }
        }
        public string SecondNamePro
        {
            get { return secondname; }
            set { secondname = value; }
        }
        public DateTime DateOfBirthPro
        {
            get { return DateOfBirth; }
            set { DateOfBirth = value; }
        }
        public int YearOfDateTimePro
        {
            get { return DateOfBirth.Year; }
            set { DateOfBirth = new DateTime(value, DateOfBirth.Month, DateOfBirth.Day); }
        }
        public override string ToString()
        {
            return base.ToString() + DateOfBirth.ToString() + secondname.ToString() + name.ToString();
        }
        public string ToShortString()
        {
            return name.ToString() + secondname.ToString();
        }
        static void Main()
        {
 
        }
        
    }
    enum Education { Spe******t,Bachelor, SecondEducation}
    class Exam 
    {
        public string objecti{get;set;}
        public int mark{get;set;}
        public System.DateTime DateOfExams{get;set;}
 
        public Exam(string objecti, int mark, System.DateTime DateOfExams)
        {
            this.objecti = objecti;
            this.mark = mark;
            this.DateOfExams = DateOfExams;
        }
        public Exam()
        {
            this.objecti = "english";
            this.mark = 5;
            this.DateOfExams= new DateTime(2016, 01, 15);
        }
        public override string ToString()
        {
            return base.ToString() + objecti.ToString() + mark.ToString() + DateOfExams.ToString();
        }
    }
    class Student
    {
        private Person datastudent;
        private Education FormOfEducation;
        private int  groupnumber;
        private readonly List<Exam> informationExams=new List<Exam>();
 
        public Student()
        {
            this.datastudent = new Person();
            this.FormOfEducation = Education.Bachelor;
            this.groupnumber = 204;
        }
        public override string ToString()
        {
            return base.ToString() + datastudent.ToString() + FormOfEducation.ToString() + groupnumber.ToString();
        }
        public Person Datastudent
        {
            get { return datastudent; }
            set { datastudent = value; }
        }
        public Education formOfEducation
        {
            get { return FormOfEducation; }
            set { FormOfEducation = value; }
        }
        public int groupnumberProp
        {
            get { return groupnumber; }
            set { groupnumber = value; }
        }
 
        public List<Exam> informationExamsPro
        {
            get { return informationExams; }
            
        }
        
        /*public double Srmark
        {
            get { return groupnumber; }
        }
         */
        
        public bool this [Education index]
        {
            get
            {
                if (this.formOfEducation == index)
                    return true; 
                return false;
            }           
        }
        public void AddExams(params Exam[] InfExamsStud)
        {
            informationExams.AddRange(InfExamsStud);
        }
        public override string ToString()
        {
            return base.ToString() + datastudent.ToString() + FormOfEducation.ToString() + groupnumber.ToString() + informationExamsPro.ToString();
        }
    //    //public string ToShortString()
    //    {
    //        return name.ToString() + secondname.ToString();
    //    }
    ////
    }
}

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

Cравнить время, необходимое для выполнения операций с элементами одномерного, двумерного прямоугольного и двумерного ступенчатого массивов с одинаковым числом элементов
свойство типа double ( только с методом get), в котором вычисляется средний балл как среднее значение оценок в списке сданных экзаменов;
метод void AddExams ( params Exam [] ) для добавления элементов в список экзаменов; виртуальный метод string ToShortString(), который формирует строку со значениями всех полей класса без списка экзаменов, но со значением среднего балла.
В методе Main() 1. Создать один объект типа Student, преобразовать данные в текстовый вид с помощью метода ToShortString() и вывести данные.
2. Вывести значения индексатора для значений индекса Education.Spe******t, Education.Bachelor и Education.SecondEducation.
3. Присвоить значения всем определенным в типе Student свойствам, преобразовать данные в текстовый вид с помощью метода ToString() и вывести данные.
4. C помощью метода AddExams( params Exam [] ) добавить элементы в список экзаменов и вывести данные объекта Student, используя метод ToString().
5. Сравнить время выполнения операций с элементами одномерного, двумерного прямоугольного и двумерного ступенчатого массивов с одинаковым числом элементов типа Exam.

И посмотрите пожалуйста код, вдруг где то неправильно сделал, спасибо всем большое
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.10.2015, 09:56
Ответы с готовыми решениями:

Определить, на сколько процентов сократилось время необходимое для выполнения работы
Производительность труда при выполнении некоторой работы повысилась на 40%. На сколько процентов сократилось время необходимое для...

Графы, найти минимальное время, необходимое для выполнения всех задач
Граф представлен в виде списка смежных. Есть множество задач T1, T2, …, Tn, для выполнения которых необходимо время t1, t2, …, tn...

Время выполнения операций
Как узнать какое время у процессора займет выполнение какого либо действия. К примеру я на форме прорисовывал многоугольник с помощью 4-х...

5
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
12.10.2015, 10:36
danilshik,
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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
 
namespace laba1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var student = new Student(new Person("Петр", "Петренко", new DateTime(1990, 10, 10)), Education.Bachelor, 109);
            Console.WriteLine(student.ToShortString());
 
            Console.WriteLine(student[Education.Bachelor]);
            Console.WriteLine(student[Education.Spe******t]);
            Console.WriteLine(student[Education.SecondEducation]);
 
            student.Person = new Person("Иван", "Сидоренко", new DateTime(1991, 11, 11));
            student.Group = 205;
            student.Education = Education.SecondEducation;
 
            Console.WriteLine(student);
 
            student.AddExams(new Exam("Math", 4, new DateTime(2015, 1, 23)), new Exam("C#", 5, new DateTime(2015, 1, 25)));
 
            Console.WriteLine(student);
 
            //arrays init
            var linearArray = new Exam[1000000];
            var rectArray = new Exam[1000,1000];
            var jaggedArray = new Exam[1000][];
 
            for (int i = 0; i < jaggedArray.Length; i++)
                jaggedArray[i] = new Exam[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();
        }
    }
 
    class Person
    {
        private string name;
        private string secondname;
        private DateTime dateOfBirth;
 
        public Person(string name, string secondname, System.DateTime birthday)
        {
            this.name = name;
            this.secondname = secondname;
            this.dateOfBirth = birthday;
        }
 
        public Person()
        {
            this.name = "";
            this.secondname = "";
            this.dateOfBirth = new DateTime();
        }
 
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
 
        public string SecondName
        {
            get { return secondname; }
            set { secondname = value; }
        }
 
        public DateTime DateOfBirth
        {
            get { return dateOfBirth; }
            set { dateOfBirth = value; }
        }
 
        public int YearOfDateOfBirth
        {
            get { return dateOfBirth.Year; }
            set { dateOfBirth = new DateTime(value, dateOfBirth.Month, dateOfBirth.Day); }
        }
 
        public override string ToString()
        {
            return dateOfBirth.Date.ToString() + " " + secondname + " " + name;
        }
 
        public string ToShortString()
        {
            return name + " " + secondname;
        }
    }
 
    enum Education { Spe******t, Bachelor, SecondEducation }
 
    class Exam
    {
        public string Discipline { get; set; }
        public int Rate { get; set; }
        public DateTime DateOfExam { get; set; }
 
        public Exam(string discipline, int rate, DateTime dateOfExam)
        {
            this.Discipline = discipline;
            this.Rate = rate;
            this.DateOfExam = dateOfExam;
        }
        public Exam()
        {
            this.Discipline = "";
            this.Rate = 0;
            this.DateOfExam = DateTime.Now;
        }
        public override string ToString()
        {
            return Discipline + " " + Rate + " " + DateOfExam;
        }
    }
 
    class Student
    {
        private Person person;
        private Education education;
        private int group;
        private readonly List<Exam> exams = new List<Exam>();
 
        public Student( Person person, Education education, int group)
        {
            this.person = person;
            this.education = education;
            this.group = group;
        }
 
        public Student()
        {
            this.person = new Person();
            this.education = Education.Bachelor;
            this.group = 204;
        }
 
        public Person Person
        {
            get { return person; }
            set { person = value; }
        }
 
        public Education Education
        {
            get { return education; }
            set { education = value; }
        }
 
        public int Group
        {
            get { return group; }
            set { group = value; }
        }
 
        public Exam[] Exams
        {
            get { return exams.ToArray(); }
 
        }
 
        public double AvgRate
        {
            get { return exams.Count > 0 ? exams.Average(e => e.Rate) : 0; }
        }
 
        public bool this[Education index]
        {
            get
            {
                return this.Education == index;
            }
        }
 
        public void AddExams(params Exam[] exams)
        {
            this.exams.AddRange(exams);
        }
 
        public override string ToString()
        {
            return string.Format("{0} {1} {2} {3}", person, education, group, string.Join(", ", exams));
        }
 
        public string ToShortString()
        {
            return string.Format("{0} {1} {2} {3:0.00}", person, education, group, AvgRate);
        }
    }
}
0
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
20.10.2015, 15:09  [ТС]
что такое Stopwatch? visio studio ругается, Stopwatch не существует в текущем контексте
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.10.2015, 15:29
Цитата Сообщение от danilshik Посмотреть сообщение
что такое Stopwatch?
https://msdn.microsoft.com/ru-... .110).aspx
Цитата Сообщение от danilshik Посмотреть сообщение
visio studio ругается, Stopwatch не существует в текущем контексте
C#
1
using System.Diagnostics;
1
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
20.10.2015, 17:53  [ТС]
все решил
0
0 / 0 / 0
Регистрация: 03.09.2015
Сообщений: 7
08.11.2016, 10:22
Здравствуйте. Извените, но объясните, пожалуйста, задание 2 в методе Main(). Как я понял, индексатор дает возможность доступа к элементам массива. Не понимаю при чем тут enum.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.11.2016, 10:22
Помогаю со студенческими работами здесь

Замерить время выполнения базовых операций
собственно, нужно замерить время выполнени +-*/ для всех типов. делал следующим образом double empty = 0; Stopwatch...

формирование двухмерных массивов и выполнение операций с матричными элементами
Поможет кто сделать лабораторную работу на тему формирование двухмерных массивов и выполнение операций с матричными элементами, в ней 15...

Формирование двумерных массивов и выполнение операций с матричными элементами
Подготовить и организовать на ПЭВМ вычисления двумерных массивов (матриц) и обработку элементов матриц формула у меня такая C(I, K)...

Найти минимальное количество операций, необходимое для возведения k в степень n
Кто-нибудь, перепишете на с++ пожалуйста var N, i, k, count, m: byte; begin write('Введите степень: N = '); ...

Посчитать количество операций в коде и время выполнения
Я не понимаю условие данной задачи. Объясните, пожалуйста, как её делать. Найти выражение вида c0 + c1N + c2N2 + c3N3, которое точно...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru