Создать класс, реализующий перегрузку операторов, разработать оконное приложение для работы с методами класса - 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);
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.25 из 5
Похожие ответы