Создать класс, реализующий перегрузку операторов, разработать оконное приложение для работы с методами класса - C#
Формулировка задачи:
Помоготите кто может)))пожалуйста)
Цель работы: Познакомиться с принципами перегрузки операторов в ЯП С#. Создать класс, реализующий перегрузку операторов, разработать оконное приложение для работы с методами данного класса.
Общее задание:
1) Выполнить задание по вариантам, реализовав один или несколько предложенных классов. Классы должны содержать перегруженные версии арифметических операторов и оператора индексации, а также все необходимые конструкторы, поля и свойства;
2) Реализовать оконное приложение для работы с классами (создание объектов, ввод параметров, выполнение операций).
Замечания:
1) В некоторых заданиях требуется создать класс, представляющий вектор объектов заданного типа. Реализация такого класса является тривиальной, а сам класс играет сугубо рудиментарную роль (нужен только для того, чтобы самостоятельно реализовать операцию индексации);
2) Во всех классах необходимо предусмотреть корректную обработку некорректных входных данных.
Задание:
8) Реализовать класс Восьмеричное число. Перегрузить арифметические операторы для выполнения сложения, умножения, вычитания и деления объектов класса Восьмеричное число. Создать класс Вектор восьмеричных чисел с перегрузкой операции индексации.
Решение задачи: «Создать класс, реализующий перегрузку операторов, разработать оконное приложение для работы с методами класса»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication21 { public class OctNumber { //Внутренее представление (Int32) private int innerNumber; //Цепочка конструкторов public OctNumber(int intNumber) : this(intNumber.ToString()) { } public OctNumber(string strNumber) { //Проверка данных bool check = strNumber.Any((Func<char, bool>)delegate(char ch) { return (char.IsDigit(ch) && char.GetNumericValue(ch) > 7); }); //Если проверка не прошла-выбрасываем исключение. Не забыть отловить его!!! if (check) throw new ArgumentException("Invalid argument!"); else innerNumber = Convert.ToInt32(strNumber, 8); } //Оператор сложения public static OctNumber operator +(OctNumber num1, OctNumber num2) { int temp1 = Convert.ToInt32(num1.ToString(), 8); int temp2 = Convert.ToInt32(num2.ToString(), 8); string temp = Convert.ToString((temp1 + temp2), 8); return new OctNumber(temp); } //Оператор вычитания public static OctNumber operator -(OctNumber num1, OctNumber num2) { int temp1 = Convert.ToInt32(num1.ToString(), 8); int temp2 = Convert.ToInt32(num2.ToString(), 8); string temp = Convert.ToString((temp1 - temp2), 8); return new OctNumber(temp); } //Оператор умножения public static OctNumber operator *(OctNumber num1, OctNumber num2) { int temp1 = Convert.ToInt32(num1.ToString(), 8); int temp2 = Convert.ToInt32(num2.ToString(), 8); string temp = Convert.ToString((temp1 * temp2), 8); return new OctNumber(temp); } //Оператор деления public static OctNumber operator /(OctNumber num1, OctNumber num2) { int temp1 = Convert.ToInt32(num1.ToString(), 8); int temp2 = Convert.ToInt32(num2.ToString(), 8); string temp = Convert.ToString((temp1 / temp2), 8); return new OctNumber(temp); } //Перегрузка Equals() public override bool Equals(object obj) { if (obj is OctNumber) { return this.ToString() == ((OctNumber)obj).ToString(); } return false; } //Перегрузка GetHashCode() public override int GetHashCode() { return this.innerNumber.GetHashCode(); } //Перегрузка ToString() public override string ToString() { return Convert.ToString(innerNumber, 8); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д