Разработать класс для работы с массивом - C#
Формулировка задачи:
нужна помощь.
8 вариант
Решение задачи: «Разработать класс для работы с массивом»
textual
Листинг программы
- using System;
- using System.Linq;
- using System.Text;
- namespace Lab_3
- {
- class Program
- {
- public class MassWork
- {
- int[,] arr;
- private int Mmass, Nmass, KolY; /// M- кол-во столбцов, в дальнейшем M просто прировняем к 2-ум;
- public int M, Length; /// в душе не чаю зачем length но на всякий случай будем вести учет кол-ва элементов
- ///<summary>
- ///переменная KolYears опираясь на закрытую переменную KolY
- ///производит проверку возраста студентов
- ///</summary>
- public int KolYears
- {
- get
- {
- return KolY;
- }
- set
- {///в if генерируем ошибку
- if (value <= 16)
- throw new ArgumentException("Студенту не может быть меньше 16 лет!", "KolYears");
- if (value > 63)
- throw new ArgumentException("Студенту не может быть ,больше 63 лет!", "KolYears");
- KolY = value;
- }
- }
- ///<summary>
- ///переменная N опираясь на закрытую переменную Nmass
- ///производит проверку кол-ва студентов
- ///</summary>
- public int N
- {
- get
- {
- return Nmass;
- }
- set
- {///в if генерируем ошибку
- if (value <= 0)
- throw new ArgumentException("Размер массива должен быть больше нуля!", "N");
- Nmass = value;
- }
- }
- ///<summary>
- ///MassWork() - Конструктор без параметров
- /// </summary>
- public MassWork()
- {
- Console.Write("Введите количество студентов: ");
- try
- {
- Nmass = int.Parse(Console.ReadLine());
- }
- ///<summary>
- ///name="ArgumentException"
- ///Обрабатываем исключительную ситуацию
- ///если кол-во студентов меньше нуля
- ///</summary>
- catch (ArgumentException ex)
- {
- Console.WriteLine("ОШИБКА: " + ex.Message);
- Console.Write("Введите размер массива (Nx2) Еще раз: ");
- Nmass = int.Parse(Console.ReadLine());
- }
- catch (StackOverflowException)
- {
- Nmass = int.Parse(Console.ReadLine());
- }
- ///--------------------------------------------------------------------
- Mmass = 2;
- N = Nmass;
- M = Mmass;
- Length = N * M;
- arr = new int[this.Nmass, this.Mmass];//создаем массив на основе индексатора
- }
- ///<summary>
- ///MassWork(int rows, int cols) - Конструктор c параметрами массива
- /// </summary>
- public MassWork(int rows, int cols)
- {
- this.Nmass = rows;
- this.Mmass = cols;
- Length = rows * cols;
- this.N = rows;
- this.M = cols;
- arr = new int[this.Nmass, this.Mmass];///создаем массив на основе индексатора
- }
- ///<summary>
- ///this[int index1, int index2] - Индексатор для массива
- /// </summary>
- public int this[int index1, int index2]
- {
- set
- {
- arr[index1, index2] = value;
- }
- get
- {
- return arr[index1, index2];
- }
- }
- ///<summary>
- ///AddMassWork(int i, int NZach, int NGod) - Метод ввода массива
- /// </summary>
- public void AddMassWork(int i, int NZach, int NGod)
- {
- this[i, 0] = NZach;
- Console.WriteLine(DateTime.Today.Year - NGod);
- try///Исключительная ситуация по возрасту студента
- {
- this.KolYears = DateTime.Today.Year - NGod;
- }
- ///<summary>
- ///name="ArgumentException"
- ///catch (ArgumentException ex) - обработка ошибок (просто еще раз попросим пользователя ввести данные)
- ///</summary>
- catch (ArgumentException ex)
- {
- Console.WriteLine("ОШИБКА: " + ex.Message);
- Console.Write("Введите год рождения Еще раз: ");
- NGod = int.Parse(Console.ReadLine());
- }
- catch (StackOverflowException)
- {
- Nmass = int.Parse(Console.ReadLine());
- }
- this[i, 1] = NGod;
- }
- ///<summary>
- ///ResultMassWork(int maxYear) - Метод обработки массива
- /// </summary>
- public void ResultMassWork(int maxYear)
- {
- int kolMax = 0;
- ///<summary>
- ///name="ArgumentException"
- ///Отнимаем от текущего года введенную дату -1 и паралельно ведем счетчик по условию
- ///</summary>
- for (int i = 0; i < this.N; i++)
- {
- Console.WriteLine("Возраст студента (" + this[i, 0] + ") составляет: " + Convert.ToString(DateTime.Today.Year - this[i, 1]-1) + " лет.");
- if (DateTime.Today.Year - this[i, 1] > maxYear)
- {
- kolMax++;
- }
- }
- Console.WriteLine("Количество студентов, возраст которых превышает заданное значение = " + Convert.ToString(kolMax));
- }
- ///<summary>
- ///GetMassWork() - Метод вывода массива
- /// </summary>
- public void GetMassWork()
- {
- for (int i = 0; i < this.N; i++)
- {
- Console.WriteLine(this[i, 0] + "\t" + this[i, 1]);
- }
- Console.ReadLine();
- }
- ///--------------------------------------------------------------------------------------------
- }
- static void Main(string[] args)
- {
- //-------------------------------------Используется конструктор класса без параметров
- MassWork myMass = new MassWork();
- //-----------------------------------------------------------------------------------
- //-------------------------------------Используется конструктор класса без параметров
- //MassWork myMass = new MassWork(3,2);
- //---------------------------------------------------------------------------------
- Console.WriteLine("Введите данные, количество студентов = " + myMass.N);
- int Nzach;
- int Gr;
- Console.WriteLine();
- //------------------------Ввод данных в массив
- for (int i = 0; i < myMass.N; i++)
- {
- Console.Write("Введите номер зач.книжки: ");
- Nzach = int.Parse(Console.ReadLine());
- Console.Write("Введите год рождения: ");
- Gr = int.Parse(Console.ReadLine());
- myMass.AddMassWork(i, Nzach, Gr);
- }
- //---------------------------------------------
- Console.WriteLine();
- //------------------------Расчет результата по условию
- int maxYear;
- Console.Write("Задайте максимальный возраст: ");
- maxYear = int.Parse(Console.ReadLine());
- myMass.ResultMassWork(maxYear);
- //-------------------------------------------------
- Console.WriteLine();
- //----------------------Вывод полной таблицы по желанию
- String yesno;
- Console.WriteLine("Вывести полный список студентов?('y'-да)");
- yesno = Console.ReadLine();
- if (yesno == "y")
- {
- myMass.GetMassWork();
- }
- //-----------------------------------------------------
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д