Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2015, 11:08   #1
Smokerose
Новичок
Джуниор
 
Регистрация: 11.10.2015
Сообщений: 4
По умолчанию Классы, свойства, индексаторы. Одномерные, прямоугольные и ступенчатые массивы

Здравствуйте, я делаю лабораторную работу по c# и возникла проблема,преподаватель и одногруппники не могут объяснить, помогите пожалуйста.
Задание:
Требования к программе, общие для всех вариантов
Определить класс 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(), который возвращает строку, содержащую только имя и фамилию.
Cравнить время, необходимое для выполнения операций с элементами одномерного, двумерного прямоугольного и двумерного ступенчатого массивов с одинаковым числом элементов.
Для этого в методе Main() создать
 одномерный массив;
 двумерный прямоугольный массив;
 двумерный ступенчатый массив.
Тип элементов массивов зависит от варианта лабораторной работы. Массивы должны иметь одинаковое число элементов. Если число строк в двумерном прямоугольном массиве равно nrow, а число столбцов ncolumn, то одномерный массив должен содержать nrow*ncolumn элементов, в двумерном ступенчатом массиве общее число элементов также должно быть равно nrow*ncolumn
Smokerose вне форума Ответить с цитированием
Старый 11.10.2015, 11:10   #2
Smokerose
Новичок
Джуниор
 
Регистрация: 11.10.2015
Сообщений: 4
По умолчанию

Мой вариант:
Определить тип Frequency - перечисление(enum) со значениями Weekly, Monthly, Yearly.
Определить класс Article, который имеет три открытых автореализуемых свойства, доступных для чтения и записи:
 свойство типа Person, в котором хранятся данные автора статьи;
 свойство типа string для названия статьи;
 свойство типа double для рейтинга статьи.
В классе Article определить:
 конструктор c параметрами типа Person, string, double для инициализации всех свойств класса;
 конструктор без параметров, инициализирующий все свойства класса некоторыми значениями по умолчанию;
 перегруженную(override) версию виртуального метода string ToString() для формирования строки со значениями всех свойств класса.
Определить класс Magazine, который имеет
 закрытое поле типа string c названием журнала;
 закрытое поле типа Frequency с информацией о периодичности выхода журнала;
 закрытое поле типа DateTime c датой выхода журнала;
 закрытое поле типа int с тиражом журнала;
 закрытое поле типа Article [] со списком статей в журнале.
В классе Magazine определить конструкторы:
 конструктор с параметрами типа string, Frequency, DateTime, int для инициализации соответствующих полей класса;
 конструктор без параметров, инициализирующий поля класса значениями по умолчанию.
В классе Magazine определить свойства c методами get и set:
 свойство типа string для доступа к полю с названием журнала;
 свойство типа Frequency для доступа к полю с информацией о периодичности выхода журнала;
 свойство типа DateTime для доступа к полю c датой выхода журнала;
 свойство типа int для доступа к полю с тиражом журнала;
 свойство типа Article*+ для доступа к полю со списком статей.
В классе Magazine определить
 свойство типа double ( только с методом get), в котором вычисляется среднее значение рейтинга в списке статей;
 индексатор булевского типа (только с методом get) с одним параметром типа Frequency; значение индексатора равно true, если значение поля типа Frequency совпадает со значением индекса, и false в противном случае;
 метод void AddArticles (params Article[]) для добавления элементов в список статей в журнале;
 перегруженную версию виртуального метода string ToString() для формирования строки со значениями всех полей класса, включая список статей;
 виртуальный метод string ToShortString(), который формирует строку со значениями всех полей класса без списка статей, но со значением среднего рейтинга статей.
В методе Main()
1. Создать один объект типа Magazine, преобразовать данные в текстовый вид с помощью метода ToShortString() и вывести данные.
2. Вывести значения индексатора для значений индекса Frequency.Weekly, Frequency.Monthly и Frequency.Yearly.
3. Присвоить значения всем определенным в типе Magazine свойствам, преобразовать данные в текстовый вид с помощью метода ToString() и вывести данные.
4. C помощью метода AddArticles( params Article [] ) добавить элементы в список статей и вывести данные объекта Magazine, используя метод ToString().
5. Сравнить время выполнения операций с элементами одномерного, двумерного прямоугольного и двумерного ступенчатого массивов с одинаковым числом элементов типа Article.
Smokerose вне форума Ответить с цитированием
Старый 11.10.2015, 11:11   #3
Smokerose
Новичок
Джуниор
 
Регистрация: 11.10.2015
Сообщений: 4
По умолчанию

Мой код:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    class Person
    {
        //Закрытые поля
        private string name;
        private string secondname;
        private DateTime BDate;

        //Конструктор с параметрами
        public Person(string studentname, string studentsecondname, System.DateTime studentBDate)
        {
            this.name = studentname;
            this.secondname = studentsecondname;
            this.BDate = studentBDate;
        }

        //Конструктор без параметров
        public Person()
        { }

        //Свойство с методами get и set;
        private string stdname;// Свойство типа string для доступа к полю с именем
        public string Name
        {
            get
            {
                return name;
            }


        }
        private string stdtsecondname;// Свойство типа string для доступа к полю с фамилией
        public string Secondname
        {
            get
            {
                return secondname;
            }

        }
        DateTime stdBDate// Свойство типа DateTime для доступа к полю с датой рождения
        {
            get
            {
                return BDate;
            }
        }

        int inststdBDate// Свойство типа int для получения информации и изменения года рождения в закрытом поле типа DateTime
        {
            get
            {
                return Convert.ToInt32(BDate);
            }

            set
            {
                BDate = Convert.ToDateTime(value);
            }
        }

        // перегруженная (override) версия виртуального метода string ToString()
        public override string ToString()
        {
            return string.Format("{0} {1}\nDate of birth: {2}", name, secondname, BDate);
        }

        //Виртуальный метод string ToShortString(), который возвращает строку, содержащую только имя и фамилию
        public string ToShortString()
        {
            return "\n" + "Имя: " + name + "\n" + "Фамилия: " + secondname;
        }
    }
    //Опеделить тип Frequency - перечисление со значениями Weekly, Monthly, Yearly
    enum Frequency { Weekly, Monthly, Yearly }

    //Опеделить класс Article, который имеет три открытых автореализуемых свойства, доступных для чтения и записи
    class Article
    {
        public

        Person AboutAuthor { get; set; }
        string Title { get; set; }
        double Top { get; set; }

        //Конструктор с параметрами типа Person, string, double для инициализации всех свойств класса
        public Article(Person writtername, string header, double rang)
        {
            this.AboutAuthor = writtername;
            this.Title = header;
            this.Top = rang;
        }

        //Конструктор без параметров
        public Article()
        {
            this.AboutAuthor = new Person();
            this.Title = "Header";
            this.Top = 1;
        }

        // перегруженная (override) версия виртуального метода string ToString()
        public override string ToString()
        {
            return string.Format("{0} {1}\nDate of birth: {2}", AboutAuthor, Title, Top);
        }
    }

    //Опеделить класс Magazine, который имеет пять закрытых полей
    class Magazine
    {
        private string title; //закрытое поле типа string c названием журнала
        private Frequency periodicity; //закрытое поле типа Frequency с информацией о периодичности выхода журнала
        private DateTime RDate; //закрытое поле типа DateTime c датой выхода журнала
        private int circulation; //закрытое поле типа int с тиражом журнала
        private Article[] list; //закрытое поле типа Article [] со списком статей в журнале

        //конструктор с параметрами типа string, Frequency, DateTime, int для инициализации соответствующих полей класса

        private Magazine(string header, Frequency rhythm, DateTime publicationdate, int quantity)
        {
            this.title = header;
            this.periodicity = rhythm;
            this.RDate = publicationdate;
            this.circulation = quantity;
        }

        //конструктор без параметров, инициализирующий поля класса значениями по умолчанию
        private Magazine()
            : this("Leonardo da Vinci", new Frequency(), new DateTime(), 10000) 
        {}

        //В классе Magazine определить свойства c методами get и set:
        private string header;// Свойство типа string для доступа к полю с названием журнала
        public string Name
        {
            get
            {
                return title;
            }


        }

Последний раз редактировалось Stilet; 11.10.2015 в 16:55.
Smokerose вне форума Ответить с цитированием
Старый 11.10.2015, 11:11   #4
Smokerose
Новичок
Джуниор
 
Регистрация: 11.10.2015
Сообщений: 4
По умолчанию

Код:
private Frequency rhythm;// Свойство типа string для доступа к полю с информацией о периодичности выхода журнала
        public Frequency Periodicity
        {
            get
            {
                return periodicity;
            }

        }
        DateTime publicationdate// Свойство типа DateTime для доступа к полю с датой выхода журнала
        {
            get
            {
                return RDate;
            }
        }

        int quantity// Свойство типа int доступа к полю с тиражом журнала
        {
            get
            {
                return circulation;
            }
        }

        // Cвойство типа Article*+ для доступа к полю со списком статей
        public Article[] Name
        {
            get
            {
                return list;
            }
        } 
     
        //Cвойство типа double ( только с методом get), в котором вычисляется среднее значение рейтинга в списке статей
        public double  Average<Article[]>(
	                    this IEnumerable<Article[]> rang,
	                        Func<Article[], long> selector)
        {
            get
            {
              return Top ;
            }
        }

    }
}
у меня не получается сделать
1)Cравнить время, необходимое для выполнения операций с элементами одномерного, двумерного прямоугольного и двумерного ступенчатого массивов с одинаковым числом элементов.
Для этого в методе Main() создать
 одномерный массив;
 двумерный прямоугольный массив;
 двумерный ступенчатый массив.
Тип элементов массивов зависит от варианта лабораторной работы. Массивы должны иметь одинаковое число элементов. Если число строк в двумерном прямоугольном массиве равно nrow, а число столбцов ncolumn, то одномерный массив должен содержать nrow*ncolumn элементов, в двумерном ступенчатом массиве общее число элементов также должно быть равно nrow*ncolumn.
2)свойство типа double ( только с методом get), в котором вычисляется среднее значение рейтинга в списке статей;

Последний раз редактировалось Stilet; 11.10.2015 в 16:55.
Smokerose вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многомерные (прямоугольные) массивы помогите пожалуйста с лабой. в С Лидия2007 Помощь студентам 0 22.12.2013 13:10
C #. Простейшие классы. Инкапсуляция и свойства. Elena04 Помощь студентам 1 07.11.2012 20:59
Простейшие классы. Инкапсуляция и свойства. Elena04 C# (си шарп) 1 07.11.2012 19:16
классы. свойства. read, write lowercase Общие вопросы Delphi 6 15.09.2010 20:31
Строки - индексаторы и свойства ArniLand Общие вопросы .NET 0 11.04.2010 16:23