Перегрузки операторов для класса 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д