Перегрузки операторов для класса Array - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте.Помогите разобраться с перегрузками,пожалуйста. Перегрузки: 1)операции ++ (– –): одновременно увеличивает (уменьшает) значение всех элементов массива на 1; 2)операции !: возвращает значение true, если элементы массива не упорядочены по возрастанию, иначе false; 3)операции бинарный *: перемножает значения поэлементно двух массивов; 1 работает 2 и 3 делала по аналогии и не могу разобраться,правильно ли их написала и добавить эти операторы в программу.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace lab2
{
    class Array
    {
        int[] intArray; //объявляем первое поле
        int n; //объявляем второе поле
        public Array(int[] a, int b) //создаем конструктор
        {
            intArray = a;
            n = b;
        }
 
    public void Razmer() //создаем метод для установки диапазона чисел от -100 до 100
    {
            Console.Write("Введите элементы массива:   ");
            for (int i = 0; i < n; i++)
            intArray[i] = int.Parse(Console.ReadLine()); //заполняем массив
    }   
    
        public void Print() //создаем метод для вывода массива на экран
        {
            Console.Write("Массив:   ");
            int count = 0; //создаем счетчик для проверки пустоты массива
            for (int i = 0; i < n; i++)
            {
                Console.Write(intArray[i] + " "); //выводим массив
                count++;
            }
            if (count == 0)
                Console.WriteLine("Массив пуст");
        }
  
        public void Sortirovka() //создаем метод для сортировки
        {
            Console.WriteLine();
            Console.WriteLine("Отсортированный массив:");
            for (int i = 0; i < n; i++) //сортируем массив пузырьковым методом
            {
                for (int j = 0; j < n - 1; j++) //берем по 2 элемента и сравниваем их
                {
                    if (intArray[j] > intArray[j + 1]) //если первый элемент больше второго, то
                    {
                        int z = intArray[j]; //записываем первый элемент в новую переменную
                        intArray[j] = intArray[j + 1]; //заменяем первый элемент вторым
                        intArray[j + 1] = z; //заменяем второй элемент первым, в итоге мы поменяли их местами, и т.д. 
                    }
                }
            }
        }
       
        public static Array operator ++(Array s) //создаем перегрузку для прибавления единицы к каждому элементу
        {
            Console.WriteLine();
            Console.WriteLine("Перегрузка ++");
            for (int i = 0; i < s.n; i++)
                s.intArray[i] = s.intArray[i] + 1; //прибавляем 1
            return s;
        }
        public static Array operator --(Array s) //создаем перегрузку для вычитания единицы от каждого элемента
        {
            Console.WriteLine();
            Console.WriteLine("Перегрузка --");
            for (int i = 0; i < s.n; i++)
                s.intArray[i] = s.intArray[i] - 1; //вычитаем 1
            return s;
        }

        public static bool operator !(Array s)
        {
            Console.WriteLine();
            Console.WriteLine("!");
            for (int i = 0; i < s.intArray.Length - 1; i++)
            {
                if (s.intArray[i] > s.intArray[i + 1])
                {
                    return false;
                }
            }
            return true;
        }
 
        public static Array operator *(Array s, int K)
        {
            Console.WriteLine();
            Console.WriteLine("*");
            for (int i = 0; i < s.intArray.Length; i++)
            {
                s.intArray[i] *= K;
            }
            return s;
        }

}
    class Program
    {
        static void Main(string[] args)
        {
            int N;
            
                Console.WriteLine("Введите размерность массива ");
                N = int.Parse(Console.ReadLine());
               
            int[] A = new int[N];
            Array massiv = new Array(A, N); //создаем объект
            massiv.Razmer(); //вызываем метод
            massiv.Print(); //выводим массив
            
            Array s = new Array(A, A.Length); //создаем новый объект для нового массива

            s.Sortirovka(); //вызываем метод сортировки
            s.Print(); //выводим массив
            
            for (int i = 0; i < 1; i++) //вызываем перегрузку, пока каждый элемент не увеличится на 1
            {
                s++; //вызываем перегрузку ++
                s.Print(); //выводим измененный массив
            }
            for (int i = 0; i < 1; i++) //вызываем перегрузку, пока каждый элемент не уменьшится на 1
            {
                s--; //вызываем перегрузку --
                s.Print(); //выводим измененный массив
            }
     
            Console.ReadLine();
        }
    }
}

Решение задачи: «Перегрузки операторов для класса Array»

textual
Листинг программы
        public static bool operator !(Array s)
        {
            Console.WriteLine();
            Console.WriteLine("!");
            for (int i = 0; i < s.intArray.Length - 1; i++)
            {
                if (s.intArray[i] > s.intArray[i + 1])
                {
                    return true;
                }
            }
            return false;
        }

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


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

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

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