Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace OOP_130922 {
- //Кротов Сергей КБ-21СО Лабораторная №1 Вариант 9. Печатное издание
- enum PrintedMatterType {
- book,
- magazine,
- booklet,
- brochure,
- newspaper
- }
- enum Language {
- English,
- Russian,
- Deutsch,
- Japanese
- }
- class PrintedMatter {
- string _name; //название печатного издания
- string _author; //автор, издательство, ....
- string _contents; //текст печатного издания
- string _owner; //текст печатного издания
- int _pagesCount; //количество страниц
- Language _lang; //язык
- PrintedMatterType _type; //тип печатного издания
- DateTime _printDate; //год(дата) издания
- public string Name { //название печатного издания
- get {
- return _name;
- }
- private set {
- if (string.IsNullOrEmpty(value)) {
- Console.WriteLine("Установлено значение по умолчанию");
- _name = "Unknown";
- } else
- _name = value;
- }
- }
- public string Author { //автор, издательство, ....
- get {
- return _author;
- }
- private set {
- if (string.IsNullOrEmpty(value)) {
- Console.WriteLine("Установлено значение по умолчанию");
- _author = "Unknown author";
- } else
- _author = value;
- }
- }
- public string Contents { //текст печатного издания
- get {
- return _contents;
- }
- private set { //никто не должен менять содержание книги
- if (string.IsNullOrEmpty(value)) {
- this.logError("Не введено содержание издания. Пересоздайте объект");
- _contents = "";
- } else
- _contents = value;
- }
- }
- public string Owner { //текст печатного издания
- get {
- return _owner;
- }
- set { //никто не должен менять содержание книги
- if (string.IsNullOrEmpty(value)) {
- this.logError("Не введен владелец издания. Пересоздайте объект");
- _owner = "";
- } else
- _owner = value;
- }
- }
- public int PagesCount { //количество страниц
- get {
- return _pagesCount;
- }
- private set { //невозможно добавить или убрать страницы книги после печати
- if (value <= 0) {
- Console.WriteLine("Установлено значение по умолчанию");
- _pagesCount = 1; //как минимум одна страница, чтобы держать в руках
- } else
- _pagesCount = value;
- }
- }
- private void logError(string msg) {
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine($"Ошибка в классе {this.GetType()}: {msg}");
- Console.ForegroundColor = ConsoleColor.White;
- }
- public DateTime PrintDate { //год(дата) издания
- get {
- return _printDate;
- }
- private set {
- if (_printDate > DateTime.Now) { //нельзя напечатать издание в будущем
- Console.WriteLine("Установлена текущая дата изданию");
- _printDate = DateTime.Now;
- } else
- _printDate = value;
- }
- }
- //когда конструктора ни одного нет - компилятор добавляет пустой(по умолчанию)
- //когда появляется хотя бы один, конструктор по умолчанию нужно задавать уже вручную
- //конструктор по умолчанию автоматически происвоит значимым полям 0, ссылочным - NULL
- public PrintedMatter(string name, string author, string contents, string owner, int pagesCount, Language lang, PrintedMatterType type, DateTime printDate) {
- _name = name; //название печатного издания
- _author = author; //автор, издательство, ....
- _contents = contents; //текст печатного издания
- _owner = owner; //владелец книги
- _pagesCount = pagesCount; //количество страниц
- _lang = lang; //язык
- _type = type; //тип печатного издания
- _printDate = printDate; //год(дата) издания
- }
- public PrintedMatter(string name, string author, string contents) : this(name, author, contents, "Библиотека ЯрГУ", 1, Language.Russian, PrintedMatterType.book, DateTime.Now) { }
- public PrintedMatter() : this("Unknown book", "Unknown author", "Empty page") { }
- public int getWordsCount() {
- int cnt = 0, letters = 0;
- for (int i = 0; i < _contents.Length; i++) {
- if (char.IsLetterOrDigit(_contents[i]))
- letters++;
- else {
- if (letters > 0)
- cnt++;
- letters = 0;
- }
- }
- if (letters > 0)
- cnt++;
- return cnt;
- }
- public void printInfo() {
- Console.WriteLine($"Автор издания: {_author}");
- Console.WriteLine($"Название: {_name}");
- Console.WriteLine($"Тип: {_type}");
- Console.WriteLine($"Язык: {_lang}");
- Console.WriteLine($"Количество страниц: {_pagesCount}");
- Console.WriteLine($"Год(дата) печати: {_printDate.ToString("dd.MM.yyyy HH:mm")}");
- }
- public void printContents() {
- Console.WriteLine($"Содержание издания “{_name}”:");
- Console.ForegroundColor = ConsoleColor.Yellow;
- Console.WriteLine(Contents);
- Console.ForegroundColor = ConsoleColor.White;
- }
- public override string ToString() {
- return string.Format("{0} \"{1}\"", _author, _name);
- }
- public static bool operator >(PrintedMatter t1, PrintedMatter t2) {
- return t1.getWordsCount() > t2.getWordsCount();
- }
- public static bool operator <(PrintedMatter t1, PrintedMatter t2) {
- return t1.getWordsCount() < t2.getWordsCount();
- }
- public static bool operator <=(PrintedMatter t1, PrintedMatter t2) {
- return t1.getWordsCount() <= t2.getWordsCount();
- }
- public static bool operator >=(PrintedMatter t1, PrintedMatter t2) {
- return t1.getWordsCount() >= t2.getWordsCount();
- }
- public static bool operator ==(PrintedMatter t1, PrintedMatter t2) {
- return t1.getWordsCount() == t2.getWordsCount();
- }
- public static bool operator !=(PrintedMatter t1, PrintedMatter t2) {
- return t1.getWordsCount() != t2.getWordsCount();
- }
- }
- class Program {
- static void Main(string[] args) {
- //contents = " iodfj fdjio ler k ааббб..куаы/341 ";
- var EmptyBook = new PrintedMatter();
- EmptyBook.printInfo();
- Console.WriteLine();
- EmptyBook.printContents();
- Console.WriteLine();
- Console.WriteLine();
- Console.WriteLine();
- string contents = "Компьютерное издательство “Диалектика”\nПеревод с английского и редакция Ю.Н.Артеменко\nПо общим вопросам обращайтесь в издательство “Диалектика” по адресу:\ninfo @dialektika.com, http:\nТроелсен, Эндрю, Джепикс, Филипп.Т70 Язык программирования C# 7 и платформы .NET и .NET Core, 8-е изд. : Пер. с\nангл. — СПб. : ООО “Диалектика”, 2018 — 1328 с. : ил. — Парал.тит.англ.\nISBN 978 - 5 - 6040723 - 1 - 8(рус.)\nББК 32.973";
- var Csharp = new PrintedMatter(
- "Язык программирования C# 7 и платформы .NET и .NET Core ",
- "Троелсен, Джепикс",
- contents,
- "Библиотека ЯрГУ",
- 1330,
- Language.Russian,
- PrintedMatterType.book,
- new DateTime(2018, 1, 1, 1, 0, 0)
- );
- Csharp.printContents();
- Console.WriteLine();
- Csharp.printInfo();
- Console.WriteLine();
- Console.WriteLine();
- var GoodBook = new PrintedMatter("Suvmer's book", "Кротов Сергей", "My profile on github: https://github.com/suvmer"); //8 words
- GoodBook.printContents();
- Console.WriteLine();
- GoodBook.printInfo();
- Console.WriteLine();
- Console.WriteLine($"Владелец книги {GoodBook.Name}: {GoodBook.Owner}");
- GoodBook.Owner = "";
- GoodBook.Owner = "Сергей Кротов";
- Console.WriteLine($"Книга {GoodBook.Name} перешла во владение человеку: {GoodBook.Owner}");
- Console.WriteLine();
- Console.WriteLine($"Количество слов в тексте книги {Csharp}:");
- Console.WriteLine(Csharp.getWordsCount());
- Console.WriteLine($"Количество слов в тексте книги {GoodBook}:");
- Console.WriteLine(GoodBook.getWordsCount());
- Console.ForegroundColor = ConsoleColor.Yellow;
- if (GoodBook > Csharp) {
- Console.WriteLine($"Книга автора {GoodBook.Author} больше по словам, чем книга {Csharp.Name}");
- } else if (GoodBook == Csharp) {
- Console.WriteLine($"У книг одинаковое количество слов");
- } else {
- Console.WriteLine($"Наибольшее количество слов в книге {Csharp.Name}");
- }
- Console.ForegroundColor = ConsoleColor.White;
- Console.ReadKey();
- }
- }
- }
- //вместо var компилятор подставит Student
- /*misha._fio = "Бабкевич Михаил";
- misha._groupName = "KB-21";
- misha._status = "academ";
- misha._number = 123456;*
- Console.WriteLine(misha);
- Console.WriteLine(vasya);
- Console.WriteLine(misha.GetType());
- Console.WriteLine(misha.GetHashCode());
- Console.WriteLine(vasya.GetHashCode());
- Console.WriteLine(misha.Equals(vasya));
- Console.ReadKey();
- }
- }
- }
- /*
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace OOP_130922 {
- //Кротов Сергей КБ-21СО Лабораторная №1 Вариант 9. Печатное издание
- enum ChallengeType {
- Exam,
- Test
- }
- class Challenge {
- ChallengeType _type; //тип испытания(экзамен, зачёт)
- int _day; //день проведения
- int _month; //месяц
- string _handler; //проводящий экзамен
- List<string> _members; //участники экзамена
- List<int> _marks; //участники экзамена
- //Challenge primer = new ...
- //primer.Day = 5; //работает set
- //Console.WriteLine(primer.Day); //работает get
- //
- public int Day { //день испытания
- get {
- return _day;
- }
- set {
- if (value > 31 || value < 1) {
- Console.WriteLine("Введён неверный день. Пересоздайте объект");
- } else
- _day = value;
- }
- }
- public int Month { //месяц испытания
- get {
- return _month;
- }
- set {
- if (value > 12 || value < 1) {
- Console.WriteLine("Введён неверный месяц. Пересоздайте объект");
- } else
- _month = value;
- }
- }
- public string Handler { //Проводящий испытание
- get {
- return _handler;
- }
- set {
- if (string.IsNullOrEmpty(value)) {
- Console.WriteLine("Не введён проводящий испытание. Пересоздайте объект");
- } else
- _handler = value;
- }
- }
- //"List<string>"
- public List<string> Members { //Проводящий испытание
- get {
- return _members;
- }
- set {
- bool fl = false;
- for (int i = 0; i < value.Count; i++) {
- if (string.IsNullOrEmpty(value[i])) {
- fl = true;
- break;
- }
- }
- if (fl) {
- Console.WriteLine("Некорректный список участников испытания. Пересоздайте объект");
- } else
- _members = value;
- }
- }
- public List<int> Marks { //Проводящий испытание
- get {
- return _marks;
- }
- set {
- bool fl = false;
- for (int i = 0; i < value.Count; i++) {
- if (value[i] < 2 || value[i] > 5) {
- fl = true;
- break;
- }
- }
- if (fl) {
- Console.WriteLine("Некорректный список результатов участников испытания. Пересоздайте объект");
- } else
- _marks = value;
- }
- }
- public Challenge(ChallengeType type, int day, int month, string handler = "ЯрГУ", List<string> members = null, List<int> marks = null) {
- if (members == null)
- members = new List<string>();
- if (marks == null)
- marks = new List<int>();
- this._type = type; //тип испытания(экзамен, зачёт)
- this.Day = day; //день проведения
- this.Month = month; //месяц
- this.Handler = handler; //проводящий экзамен
- this.Members = members; //участники экзамена
- this.Marks = marks; //оценки участников
- }
- public Challenge() : this(ChallengeType.Exam, 1, 1) { }
- public void addMemberWithMark(string name, int mark) {
- if (string.IsNullOrEmpty(name)) {
- Console.WriteLine("Пустое имя");
- return;
- }
- if (mark < 2 || mark > 5) {
- Console.WriteLine("Некорректная оценка");
- return;
- }
- _members.Add(name);
- _marks.Add(mark);
- }
- public void printMembers() {
- //String.Join("\n", _members);
- Console.WriteLine("Список участников испытания: ");
- foreach (string name in _members)
- Console.WriteLine(name);
- }
- public override string ToString() {
- return string.Format("{0}: ({1}.{2})", _type, Day, Month);
- }
- //Challenge ch1, ch2;
- //if(ch1 > ch2)
- public static bool operator >(Challenge t1, Challenge t2) {
- return t1.Day > t2.Day;
- }
- public static bool operator <(Challenge t1, Challenge t2) {
- return t1.Day < t2.Day;
- }
- public static bool operator <=(Challenge t1, Challenge t2) {
- return t1.Day <= t2.Day;
- }
- public static bool operator >=(Challenge t1, Challenge t2) {
- return t1.Day >= t2.Day;
- }
- }
- class Program {
- static void Main(string[] args) {
- List<string> names = new List<string>() { "Misha", "Gosha", "Masha" };
- List<int> marks = new List<int>() { 5, 3, 4 };
- var misha = new Challenge(ChallengeType.Test, 20, 9, "Артём", names, marks);
- var vasya = new Challenge();
- //вместо var компилятор подставит Student
- /*misha._fio = "Бабкевич Михаил";
- misha._groupName = "KB-21";
- misha._status = "academ";
- misha._number = 123456;*
- Console.WriteLine(misha);
- Console.WriteLine(vasya);
- Console.WriteLine(misha.GetType());
- Console.WriteLine(misha.GetHashCode());
- Console.WriteLine(vasya.GetHashCode());
- Console.WriteLine(misha.Equals(vasya));
- Console.ReadKey();
- }
- }
- }
- */
Advertisement
Advertisement