Перегрузки операторов для класса 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;
}