Практикум по курсу "Объектно-ориентированное программирование" на языке C#. Андрианова А.А - 87 стр.

UptoLike

86
if (index < count && i == list[index].I)
{
// пропускаем элементы, находящиеся в той же
// строке, но в столбцах с меньшим номером
while (index < count && i == list[index].I &&
j > list[index].J)
index++;
}
// если элемент в заданной позиции уже
// имеется, удаляем его из списка
if (index < count && i == list[index].I && j == list[index].J)
{
list.RemoveAt(index);
count--;
}
}
// метод получения элемента списка с заданными индексами
public MatrixElement ExistsElement(int i, int j)
{
MatrixElement exists = null;
// пропускаем элементы, находящиеся
// до требуемого элемента
for (int k = 0; k < count; k++)
{
if (list[k].I == i && list[k].J == j)
{
exists = list[k];
break;
}
// если позиция искомого элемента пройдена, то элемента нет
if (!(list[k].I < i || (list[k].I == i && list[k].J < j)))
break;
}
return exists;
}
// операция получения строкового представления матрицы
static public implicit operator string(MatrixList ob)
{
string res = "";
int i = 0, j = 0;
// цикл просмотра элементов списка
for (int k = 0; k < ob.count; k++)
{
// вывод нулей в качестве элементов
// предшествующих строк
for (; i < ob.list[k].I; i++)
{
for (; j < ob.n; j++)
res = res + "0\t";
    if (index < count && i == list[index].I)
    {
       // пропускаем элементы, находящиеся в той же
       // строке, но в столбцах с меньшим номером
       while (index < count && i == list[index].I &&
                                              j > list[index].J)
          index++;
    }
    // если элемент в заданной позиции уже
    // имеется, удаляем его из списка
    if (index < count && i == list[index].I && j == list[index].J)
    {
       list.RemoveAt(index);
       count--;
    }
}

// метод получения элемента списка с заданными индексами
public MatrixElement ExistsElement(int i, int j)
{
   MatrixElement exists = null;
   // пропускаем элементы, находящиеся
   // до требуемого элемента
   for (int k = 0; k < count; k++)
   {
      if (list[k].I == i && list[k].J == j)
      {
         exists = list[k];
         break;
      }
      // если позиция искомого элемента пройдена, то элемента нет
      if (!(list[k].I < i || (list[k].I == i && list[k].J < j)))
         break;
   }
   return exists;
}

// операция получения строкового представления матрицы
static public implicit operator string(MatrixList ob)
{
   string res = "";
   int i = 0, j = 0;
   // цикл просмотра элементов списка
   for (int k = 0; k < ob.count; k++)
   {
      // вывод нулей в качестве элементов
      // предшествующих строк
      for (; i < ob.list[k].I; i++)
      {
         for (; j < ob.n; j++)
            res = res + "0\t";

                                                                     86