Разработать класс для работы с массивом - 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();
}
//-----------------------------------------------------
}
}
}