- •Общие требования
- •1 Примеры реализации заданий
- •1.1 Основные элементы класса
- •1.2 Перегрузка операторов
- •1.3 Использование делегатов
- •1.4 Универсальные типы библиотеки .Net Framework
- •2 Варианты заданий
- •2.1 Основные элементы класса
- •2.2 Перегрузка операторов
- •2.3 Использование делегатов
- •2.4 Универсальные типы библиотеки .Net Framework
не менее 2. Размер массива не может быть изменен;
отображение: должно отображаться наименование массива, а также разница между максимальным и минимальным элементами;
обязательный метод класса: выводит два числа, разделенных пробелом – сумму элементов, стоящих в нечетных и четных позициях, соответственно;
дополнительное действие в программе: определение массивов, у которых суммы элементов, стоящих в четных и нечетных позициях, равны. При выводе указывать наименование массива и найденную сумму.
25.описание класса: одномерный вещественный массив;
обязательные поля:
1.уникальный идентификатор. Не может быть изменен;
2.собственно массив, значения элементов которого не равны 0. Размер массива задается в конструкторе класса и должен быть не менее 2. Размер массива не может быть изменен;
отображение: должен отображаться уникальный идентификатор массива, а также сумма дробных частей элементов;
обязательный метод класса: определяет количества отрицательных и положительных элементов массива, соответственно;
дополнительное действие в программе: определение массива, у которых суммы отрицательных элементов наибольшая. При выводе указывать наименование массива и найденную сумму. Если есть несколько массивов с максимальной суммой, то вывести любой из них.
2.2 Перегрузка операторов
Задание: Для условий задачи обеспечить:
а) реализацию класса, включающую перегрузку указанных операто-
ров;
б) создание экземпляра класса на основе данных, введенных в компонентах класса TextBox, и его добавление в компонент класса ListBox;
в) удаление выбранного в компоненте класса ListBox экземпляра класса;
г) реализацию выполнения перегруженных унарных операторов с выбранным в компонент класса ListBox экземпляром класса;
д) реализацию выполнения перегруженных бинарных операторов. При этом первым операндом считать выбранный в компонент класса ListBox экземпляр класса, а вторым – данные в компонентах класса
45
TextBox (при необходимости допускается создание для второго операнда экземпляра класса);
е) результат выполнения перегруженных операторов отображается в компоненте класса TextBox. При этом, в результате должны быть отображены операнды, оператор и результат выполнения.
Примечание: при описании оператора в скобках указываются типы операндов. Обозначение <T> определяет тип создаваемого класса.
Варианты заданий приведены в таблице 7.
Таблица 7 – Варианты заданий по перегрузке операторов
№ |
|
|
Описание полей класса и перегружаемых операторов |
1. |
|
поля: |
|
|
|
1. |
int, без ограничений, по умолчанию 25; |
|
|
2. |
int, трехзначное, ≥ 0, по умолчанию 100; |
|
отображение: «10 - 150»; |
||
|
|
перегружаемые операторы: |
|
|
|
1. |
+(<T>,<T>). Отдельно складываются поля №1 и №2. Если при |
|
|
|
сложении полей №2 значение превышает 999, то в результиру- |
|
|
|
ющее поле №2 записывается значение по умолчанию, а в сумму |
|
|
|
полей №1 добавляется единица; |
|
|
2. |
+(<T>,int). Складывается поле №2 с целым числом. Если при |
|
|
|
сложении значение выходит за диапазон 100÷999, то в резуль- |
|
|
|
тирующее поле №2 записывается ближайшее значение из ука- |
|
|
|
занного диапазона (т.е. 100 или 999). Результирующее значение |
|
|
|
поля №1 равно значению поля №1 первого операнда; |
|
|
3. |
==(<T>,<T>). Истина, если у двух операндов равны соответ- |
|
|
|
ствующие поля; |
|
|
4. |
>(<T>,<T>). Истина, если поле №1 первого операнда больше |
|
|
|
поля №1 второго операнда, или поля №1 равны, а поле №2 пер- |
|
|
|
вого операнда больше поля №2 второго операнда. |
2. |
|
поля: |
|
|
|
1. |
string, не пустая, по умолчанию «a»; |
|
|
2. |
int, без ограничений, по умолчанию 5: |
|
|
отображение: «абвгде (123)»; |
|
|
|
перегруженные операторы: |
|
|
|
1. |
+(<T>,<T>). При сложении полей №1 получается строка, со- |
|
|
|
стоящая из поля №1 первого операнда, дополненного символа- |
|
|
|
ми поля №1 второго операнда, не входящими в поле №1 первого |
|
|
|
операнда. Для полей №2 осуществляется обычное сложение; |
|
|
2. |
-(<T>). В поле №1 меняется порядок букв на противополож- |
46
ный. У поля №2 меняется знак;
3.!=(<T>,<T>). Истина, если у операндов не равны длины полей №1 или значения полей №2;
4.<(<T>,<T>). Истина, если длина поля №1 первого операнда меньше длины поля №1 второго операнда, или длины полей №1 равны, а поле №2 первого операнда меньше поля №2 второго операнда.
3.поля:
1.string, не пустая, по умолчанию «б»;
2.string, не пустая, по умолчанию «в»;
отображение: «абвгде - клмноп»;
перегруженные операторы:
1.*(<T>,<T>). Значением поля №1 является строка, состоящая из символов поля №1 первого операнда, для которых в той же позиции поля №1 второго операнда находится такой же символ. Если таких символов не найдено, то в поле №1 записывается значение по умолчанию. Для полей №2 осуществляется аналогичное действие;
2.-(<T>). В полях меняется порядок букв на противоположный;
3.==(<T>,<T>). Истина, если у двух операндов равны соответствующие поля;
4.<(<T>,<T>). Истина, если значение поля №1 первого операнда меньше значения поля №1 второго операнда, или значения полей №1 равны, а значение поле №2 первого операнда меньше значения поля №2 второго операнда.
4.поля:
1.int, двухзначное, по умолчанию 22;
2.int, трехзначное, по умолчанию 333;
отображение: «12 - 345»;
перегруженные операторы:
1.+(<T>,<T>). Отдельно складываются поля №1 и №2. Результирующие значения получаются путем нахождения остатка от деления на 100 и 1000 сумм полей №1 и №2 соответственно;
2.-(<T>). В значение поля №1 записываются два младших разряда исходного значения поля №2, а в значение поля №2 – исходное значение поля №1, сложенное с 100;
3.==(<T>,<T>). Истина, если у операндов равны суммы полей;
4.>(<T>,<T>). Истина, если у сумма полей первого операнда больше суммы полей второго операнда.
5.поля:
1.string, не пустая, по умолчанию «г»;
2.int, только для чтения, равно количеству букв в поле №1, по
47
умолчанию 1;
отображение: «абс[3]»;
перегруженные операторы:
1.+(<T>,<T>). Отдельно складываются поля №1 и №2.
2.-(<T>,int). Из поля №1 удаляются последние буквы в количестве, заданном во втором параметре. Если удалены все буквы, то поля принимает значение по умолчанию. Поле №2 соответствует количеству букв в поле №1;
3.==(<T>,<T>). Истина, если у операндов равны значения полей №1;
4.<(<T>,<T>). Истина, если у первого операнда значение поля №1 меньше, чем у второго операнда.
6.поля:
1.int, двухзначное, по умолчанию 20;
2.double, >0, по умолчанию 1.3;
отображение: «12 - 34.56»;
перегруженные операторы:
1.+(<T>,int). Складывается поле №1 с целым числом. Если при сложении значение выходит за диапазон 10÷99, то в результирующее поле №1 записывается ближайшее значение из указанного диапазона (т.е. 10 или 99). Результирующее значение поля №2 равно значению поля №2 первого операнда;
2.+(<T>,double). Складывается поле №2 с вещественным числом. Если при сложении получается отрицательное значение, то. целая часть дробного числа принимает значение 0. Результирующее значение поля №1 равно значению поля №1 первого операнда;
3.==(<T>,<T>). Истина, если у операндов равны значения полей №1 и целых частей полей №2;
4.<(<T>,<T>). Истина, если поле №1 первого операнда меньше поля №1 второго операнда, или значения полей равны, а целая часть поля №2 первого операнда меньше целой части поля №2 второго операнда.
7.поля:
1.int, без ограничений, по умолчанию 5;
2.int, без ограничений, по умолчанию 48;
отображение: «[12][34]»;
перегруженные операторы:
1.+(<T>,int). Складывается целое число с полем, имеющим минимальное значение. Результирующее значение другого поля равно значению соответствующего поля первого операнда;
2.*(<T>,<T>). Результирующее значение поля №1 получается
48
путем умножения значения поля №1 первого операнда на минимальное из значений полей второго операнда. Результирующее значение поля №2 получается путем умножения значения поля №2 первого операнда на максимальное из значений полей второго операнда;
3.==(<T>,<T>). Истина, если у операндов равны разницы между значениями полей (по абсолютной величине);
4.>(<T>,<T>). Истина, если у первого операнда разница между значениями полей больше, чем у второго операнда (по абсолютной величине).
8.поля:
1.string, не пустая, по умолчанию «д»;
2.string, не пустая, по умолчанию «е»;
отображение: «(абвг) - (дежз)»;
перегруженные операторы:
1.-(<T>,int). Из каждого поля первого операнда удаляются последние буквы в количестве, заданном во втором операнде. Если значение второго операнда ≥ количества букв в каком-нибудь поле первого операнда, то результатом поля является значение по умолчанию;
2.+(<T>,<T>). Результирующее значение поля №1 равно сумме полей первого операнда, а поля №2 – сумме полей второго операнда;
3.!=(<T>,<T>). Истина, если суммарные длины полей операндов неравны;
4.>(<T>,<T>). Истина, если суммарные длины полей первого операндов больше суммарной длины полей второго операнда.
9.поля:
1.string, не пустая, по умолчанию «ж»;
2.string, не пустая, по умолчанию «з»;
отображение: «[абвг]{дежз}»;
перегруженные операторы:
1.-(<T>,<T>). Из каждого поля первого операнда удаляются последние буквы в количестве, равном длине соответствующего поля второго операнда. Если длина какого-либо поля второго операнда ≥ длине соответствующего поля первого операнда, то результатом поля является значение по умолчанию;
2.*(<T>,int). Результирующие поля получаются путем повторения исходных полей первого операнда. Количество повторений задается во втором операнде;
3.==(<T>,<T>). Истина, если значения соответствующих полей операндов имеют одинаковые значения;
49
4.<(<T>,<T>). Истина, если значения поля №1 первого операнда меньше значения поля №1 второго операнда, или если значения полей №1 равны, а значение поля №2 первого операнда меньше значения поля №2 второго операнда.
10.поля:
1.int, >0, по умолчанию 12;
2.int, >0, по умолчанию 13;
отображение: «_12_34_»;
перегруженные операторы:
1.-(<T>,<T>). Результирующие поля являются разностью соответствующими полей операндов. Если значение какого-либо результирующего поля ≤0, то поле принимает значение по умолчанию;
2.+(<T>,double). Поле №1 первого операнда складывается с целой частью второго операнда. Поле №2 складывается с целой частью результата умножения дробной части второго операнда на 100;
3.!=(<T>,<T>). Истина, если минимальное значение из полей первого операнда не равно минимальному значению из полей второго операнда;
4.<(<T>,<T>). Истина, если минимальное значение из полей первого операнда меньше минимального значения из полей второго операнда.
11.поля:
1.int, без ограничений, по умолчанию 2;
2.string, не пустая, по умолчанию «и»;
отображение: «~12~абс»;
перегруженные операторы:
1.-(<T>). Результирующие поле №1 получается путем изменения знака поля №1 операнда. Результирующее значение поля №2 – строка, в которой буквы поля №2 операнда расположены в обратном порядке;
2.+(<T>,int). Поле №1 первого операнда складывается со значением второго операнда. Результирующее значение поля №2 равно значению поля №2 первого операнда;
3.!=(<T>,<T>). Истина, если сумма поля №1 и количества букв поля №2 первого операнда не равна сумме поля №1 и количества букв поля №2 второго операнда;
4.>(<T>,<T>). Истина, если сумма поля №1 и количества букв поля №2 первого операнда больше суммы поля №1 и количества букв поля №2 второго операнда.
12.поля:
50
1.double, ≥0, по умолчанию 4.5;
2.double, ≥0, по умолчанию 6.7;
отображение: «12.34 - 56.78»;
перегруженные операторы:
1.+(<T>,double). Каждое из полей первого операнда складывается со значением второго операнда. Если значение какого-либо поля становится меньше нуля, то полю присваивается значение по умолчанию;
2.-(<T>,<T>). Результирующие значения полей содержат разницу между соответствующими полями первого и второго операндов. Если значение какого-либо поля становится меньше нуля, то полю присваивается значение по умолчанию;
3.!=(<T>,<T>). Истина, если сумма полей первого операнда не равна сумме полей второго операнда;
4.>(<T>,<T>). Истина, если сумма полей первого операнда больше сумме полей второго операнда.
13.поля:
1.int, двухзначное, >0, по умолчанию 99;
2.int, двухзначное, >0, по умолчанию 11;
отображение: «[12][34]»;
перегруженные операторы:
1.+(<T>,<T>). Складываются соответствующие поля первого и второго операндов. Если значение какого-либо из полей становится больше 99, то результатом поля является остаток от деления полученного значения на 100. Если значение какого-либо поля становится меньше 10 (в том числе и после операции получения остатка), то поле принимает значение по умолчанию;
2.-(<T>,int). Из каждого поля первого операнда вычитается второй операнд. Если значение какого-либо из полей становится больше 99, то результатом поля является остаток от деления полученного значения на 100. Если значение какого-либо поля становится меньше 10 (в том числе и после операции получения остатка), то поле принимает значение по умолчанию;
3.!=(<T>,<T>). Истина, если сумма разрядов полей первого операнда не равна сумме разрядов полей второго операнда;
4.<(<T>,<T>). Истина, если сумма разрядов полей первого операнда не равна сумме разрядов полей второго операнда.
14.поля:
1.int, в диапазоне 0÷23, по умолчанию 12;
2.int, в диапазоне 0÷59, по умолчанию 0;
отображение: «12 : 34»;
перегруженные операторы:
51
1.+(<T>,<T>). Отдельно складываются поля №1 и №2 операндов. Если полученное значение поля №2 выходит за границы диапазона, то производится нахождение остатка от деления полученного значения на 60, и к сумме полей №1 добавляется единица. Если результирующее значение поля №1 выходит за границы диапазона, то производится нахождение остатка от деления на 24;
2.-(<T>). Результирующие значения полей получаются путем вычитания исходных значений полей из количества чисел в допустимом диапазоне. Если значение какого-либо результирующего поля выходит за границы диапазона, то оно заменяется остатком от деления полученного значения на количество чисел в диапазоне;
3.!=(<T>,<T>). Истина, если значение какого-либо поля первого операнда не равно значению соответствующего поля второго операнда;
4.<(<T>,<T>). Истина, если значение поля №1 первого операнда меньше значения поля №1 второго операнда, или значения полей №1 равны, а значение поля №2 первого операнда меньше значения поля №2 второго операнда.
15.поля:
1.string, не пустая, по умолчанию «к»;
2.int, ≥0, по умолчанию 28;
отображение: «абвг_123»;
перегруженные операторы:
1.+(<T>,int). Складывается поле №2 первого операнда со вторым операндом. Если результирующее значение <0, то оно принимает значение по умолчанию поля №2. Результирующее значение поле №1 равно значению поля №1 первого операнда;
2.-(<T>). Результирующее значение поля №1 получается путем записи поля №1 операнда в обратном порядке. Результирующее значение поля №2 получается путем записи разрядов поля №2 операнда в обратном порядке;
3.==(<T>,<T>). Истина, если сумма длины поля №1 и младшего разряда поля №2 первого операнда равна сумме длины поля №1 и младшего разряда поля №2 второго операнда;
4.>(<T>,<T>). Истина, если сумма длины поля №1 и младшего разряда поля №2 первого операнда больше суммы длины поля №1 и младшего разряда поля №2 второго операнда.
16.поля:
1.int, ≥0, по умолчанию 67;
2.double, ≥0, по умолчанию 2.3;
52
отображение: «[12] 45.67»;
перегруженные операторы:
1.*(<T>,<T>). Результирующее значение полей получаются путем перемножения соответствующих полей операндов. Если значение одного из полученных полей <0, то полю присваивается значение по умолчанию;
2.-(<T>,int). Результирующее значение поля №1 получаются путем вычитания второго операнда из поля №1 первого операнда. Результирующее значение поля №2 получаются путем вычитания второго операнда, деленного на 100, из поля №2 первого операнда. Если значение одного из полученных полей <0, то полю присваивается значение по умолчанию;
3.!=(<T>,<T>). Истина, если сумма поля №1 и целой части поля №2 первого операнда не равна сумме поля №1 и целой части поля №2 второго операнда;
4.>(<T>,<T>). Истина, если сумма поля №1 и целой части поля №2 первого операнда больше суммы поля №1 и целой части поля №2 второго операнда.
17.поля:
1.int, ≥0, по умолчанию 87;
2.int, ≥0, по умолчанию 65;
отображение: «12 ! 34»;
перегруженные операторы:
1.*(<T>,int). Результирующее значение полей получаются путем перемножения соответствующих полей первого операнда на второй операнд. Если значение одного из полученных полей <0, то полю присваивается значение по умолчанию;
2.-(<T>). Результирующее значение полей получаются путем записи в обратном порядке разрядов соответствующих полей операнда;
3.==(<T>,<T>). Истина, если младшие разряды полей первого операнда равна младшим разрядам соответствующих полей второго операнда;
4.<(<T>,<T>). Истина, если младший разряд поля №1 первого операнда меньше младшего разряда поля №1 второго операнда, или младшие разряды полей №1 равны, а младший разряд поля №2 первого операнда меньше младшего разряда поля №2 второго операнда.
18.поля:
1.double, ≥0, по умолчанию 9.8;
2.double, ≥0, по умолчанию 7.6;
отображение: «12.34 х 56.78»;
53
перегруженные операторы:
1.+(<T>,int). Результирующее значение поля №1 получается путем сложения поля №1 первого операнда со вторым операндом. Результирующее значение поля №2 получается путем сложения поля №2 первого операнда со вторым операндом, разделенным на 100. Если значение одного из полученных полей <0, то полю присваивается значение по умолчанию;
2.-(<T>). Результирующее значение поля №1 получается путем сложения целой части поля №1 операнда с дробной частью поля №2 операнда. Результирующее значение поля №2 получается путем сложения целой части поля №2 операнда с дробной частью поля №1 операнда;
3.==(<T>,<T>). Истина, если целые части соответствующих полей операндов равны;
4.<(<T>,<T>). Истина, если целая часть поля №1 первого операнда меньше целой части поля №1 второго операнда, или целые части полей №1 равны, а целая часть поля №2 первого операнда меньше целой части поля №2 второго операнда.
19.поля:
1.string, не пустая, по умолчанию «л»;
2.int, трехзначное, ≥0, по умолчанию 158;
отображение: «[абвг]_123_»;
перегруженные операторы:
1.*(<T>,int). Результирующее значение поля №2 получается путем выделения трех младших разрядов из произведения исходного поля №1 первого операнда на значение второго операнда. Если полученное значение <100, то принимается значение по умолчанию. Результирующее значение поля №1 равно значению поля №1 первого операнда;
2.-(<T>,<T>). Результирующее значение поля №1 получается путем удаления из значения поля №1 первого операнда букв, входящих в поле №1 второго операнда. Если результирующее значение поля №1 равно пустой строке, то принимается значение по умолчанию. Результирующее значение поля №2 получается путем нахождения разницы между полями №2 операндов. Если значение выходит за диапазон 100÷999, то оно принимает значение ближайшей границы диапазона;
3.!=(<T>,<T>). Истина, если имеется разница в значениях соответствующих полей операндов;
4.>(<T>,<T>). Истина, если значение поля №1 первого операнда больше значения поля №1 второго операнда, или значения полей №1 равны, а значение поля №2 первого операнда больше
54
значения поля №2 второго операнда.
20.поля:
1.int, ≥0, по умолчанию 11;
2.double, ≥0, по умолчанию 7.3;
отображение: «<12><34.56>»;
перегруженные операторы:
1.+(<T>,<T>). Результирующее значение полей получается путем сложения соответствующих полей операндов;
2.-(<T>). Результирующее значение поля №1 равно целой части поля №2 операнда. Результирующее значение поля №2 равно сумме поля №1 и дробной части поля №2 операнда;
3.==(<T>,<T>). Истина, если сумма поля №1 и целой части поля №2 первого операнда равна сумме поля №1 и целой части поля №2 второго операнда;
4.<(<T>,<T>). Истина, если сумма поля №1 и целой части поля №2 первого операнда меньше суммы поля №1 и целой части поля №2 второго операнда.
21.поля:
1.double, ≥0, по умолчанию 4.8;
2.double, ≥0, по умолчанию 4.9;
отображение: «12.34 $ - 56.78 руб./$»;
перегруженные операторы:
1.-(<T>,int). Результирующее значение полей получается путем вычитания из значений полей первого операнда значения второго операнда. Если какое-либо результирующее поле <0, то оно принимает значение по умолчанию;
2.*(<T>,<T>). Результирующее значение полей получается путем перемножения полей операндов. Если какое-либо результирующее поле <0, то оно принимает значение по умолчанию;
3.==(<T>,<T>). Истина, если равны целые части соответствующих полей операндов;
4.>(<T>,<T>). Истина, если целая часть поля №1 первого операнда больше целой части поля №1 второго операнда, или целые части полей №1 равны, а целая часть поля №2 первого операнда больше целой части поля №2 второго операнда.
22.поля:
1.int, ≥0, по умолчанию 93;
2.string, не пустая, по умолчанию «м»;
отображение: «12 - абвг»;
перегруженные операторы:
1.+(<T>,<T>). Результирующие значения полей равны сумме
55
значений соответствующих полей операндов;
2.-(<T>,int). Результирующее значение поля №1 равно разнице между значениями поля №1 первого операнда и второго операнда. Если результирующее значение поля №1 <0, то оно принимает значение по умолчанию. Результирующее значение поля №2 равно значению поля №2 первого операнда, из которого удалены последние буквы в количестве, равном значению второго операнда. Если значение второго операнда <0, то удаление не производится. Если результирующее значение поля №2 является пустой строкой, то оно принимает значение по умолчанию;
3.==(<T>,<T>). Истина, если сумма поля №1 и количества букв поля №2 первого операнда равна сумме поля №1 и количества букв поля №2 второго операнда;
4.<(<T>,<T>). Истина, если сумма поля №1 и количества букв поля №2 первого операнда меньше суммы поля №1 и количества букв поля №2 второго операнда.
23.поля:
1.string, не пустая, по умолчанию «н»;
2.string, не пустая, по умолчанию «о»;
отображение: «(абвг) - (дежз)»;
перегруженные операторы:
1.+(<T>,int). Результирующие значения полей получаются путем добавления к значению соответствующих полей первого операнда строк, длина которых равна значению второго операнда, а каждая буква равна первой букве соответствующего поля первого операнда. Если значение второго операнда <0, то добавляемая строка равная значению по умолчанию соответствующего поля;
2.-(<T>). Результирующее поле №1 равно полю №2 операнда, а результирующее поле №2 равно полю №1 операнда;
3.!=(<T>,<T>). Истина, если имеются различия в значениях соответствующих полей;
4.>(<T>,<T>). Истина, если значение поля №1 первого операнда больше значения поля №1 второго операнда, или значения полей №1 равны, а значение поля №2 первого операнда больше значения поля №2 второго операнда.
24.поля:
1.double, ≥0, по умолчанию 6.1;
2.double, ≥0, по умолчанию 9.2;
отображение: «12.34 : 56.78»;
перегруженные операторы:
1.+(<T>,int). Результирующие значения полей получаются пу-
56
тем сложения целой части полей первого операнда с произведением дробной части полей первого операнда на второй операнд. Если результирующее значение какого-либо поля <0, то поле принимает значение по умолчанию;
2.-(<T>). Результирующие значения поля №1 получается путем сложения целой части поля №1 операнда с дробной частью поля №2. Результирующие значения поля №2 получается путем сложения целой части поля №2 операнда с дробной частью поля №1;
3.!=(<T>,<T>). Истина, если целая часть поля №1 первого операнда не равна целой части поля №1 второго операнда, или целая часть поля №2 первого операнда не равна целой части поля №2 второго операнда;
4.<(<T>,<T>). Истина, если целая часть поля №1 первого операнда меньше целой части поля №1 второго операнда, или целый части полей №1 равны, а целая часть поля №2 первого операнда меньше целой части поля №2 второго операнда.
25.поля:
1.int, трехзначное, ≥0, по умолчанию 123;
2.int, двухзначное, ≥0, по умолчанию 12;
отображение: «123 (45)»;
перегруженные операторы:
1.+(<T>,int). Результирующие значения полей получаются путем сложения значений полей первого операнда со значением второго операнда. Если результирующее значение какого-либо поля выходит за допустимый диапазон, то оно принимает значение ближайшей границы диапазона;
2.-(<T>,<T>). Результирующие значения полей получаются путем разности между значениями соответствующих полей первого и второго операндов. Если результирующее значение какоголибо поля выходит за допустимый диапазон, то оно принимает значение ближайшей границы диапазона;
3.!=(<T>,<T>). Истина, если минимум из двух старших разрядов поля №1 и всего поля №2 первого операнда не равен минимуму из двух старших разрядов поля №1 и всего поля №2 второго операнда;
4.>(<T>,<T>). Истина, если минимум из двух старших разрядов поля №1 и всего поля №2 первого операнда больше минимума из двух старших разрядов поля №1 и всего поля №2 второго операнда;
57