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

UptoLike

85
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[index].Value = value;
insert = true;
}
// если элемента с такими индексами в списке не было,
// вставляем новый элемент в список
if (!insert)
{
MatrixElement element =
new MatrixElement(i, j, value);
list.Insert(index, element);
count++;
}
}
else
// генерация исключения в случае
// некорректной позиции вставляемого элемента
throw new BadIndexException(m, n);
}
}
Аналогичный подход к поиску элемента в списке используется в
методах удаления заданного элемента, проверки существования элемента в
списке и в операции получения строкового представления матрицы.
// метод удаления элемента из списка
void DeleteElement(int i, int j)
{
// список пуст, следовательно, матрица состоит только из нулей
if(count == 0)
return;
// поиск позиции в списке удаляемого элемента
int index = 0;
// пропускаем элементы, находящиеся
// в строках с меньшим номером
while (index < count && i > list[index].I)
index++;
              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[index].Value = value;
                   insert = true;
                }
                // если элемента с такими индексами в списке не было,
               // вставляем новый элемент в список
                if (!insert)
                {
                   MatrixElement element =
                                   new MatrixElement(i, j, value);
                   list.Insert(index, element);
                   count++;
                }
             }
             else
                // генерация исключения в случае
                // некорректной позиции вставляемого элемента
                throw new BadIndexException(m, n);
         }
     }

     Аналогичный подход к поиску элемента в списке используется в
методах удаления заданного элемента, проверки существования элемента в
списке и в операции получения строкового представления матрицы.

     // метод удаления элемента из списка
     void DeleteElement(int i, int j)
     {
        // список пуст, следовательно, матрица состоит только из нулей
        if(count == 0)
           return;
        // поиск позиции в списке удаляемого элемента
        int index = 0;

         // пропускаем элементы, находящиеся
         // в строках с меньшим номером
         while (index < count && i > list[index].I)
            index++;

85