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

UptoLike

84
// индексатор для доступа к элементу матрицы по его индексам
public double this[int i, int j]
{
// получение значения элемента матрицы
get
{
// поиск позиции искомого элемента в списке
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)
return list[index].Value;
// если элемента в списке нет, его значение равно 0
return 0;
}
// установка значения элемента матрицы
set
{
bool insert = false;
// проверка корректности позиции устанавливаемого элемента
if (i < m && j < n)
{
// если новое значение элемента нулевое,
// удаляем элемент из списка
if (value == 0)
{
DeleteElement(i, j);
return;
}
// поиск позиции устанавливаемого элемента
int index = 0;
// пропускаем элементы, находящиеся
// в строках с меньшим номером
while (index < count && i > list[index].I)
index++;
// индексатор для доступа к элементу матрицы по его индексам
public double this[int i, int j]
{
   // получение значения элемента матрицы
   get
   {

      // поиск позиции искомого элемента в списке
      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)
         return list[index].Value;
      // если элемента в списке нет, его значение равно 0
      return 0;
  }

  // установка значения элемента матрицы
  set
  {
     bool insert = false;
     // проверка корректности позиции устанавливаемого элемента
     if (i < m && j < n)
     {
        // если новое значение элемента нулевое,
        // удаляем элемент из списка
        if (value == 0)
        {
           DeleteElement(i, j);
           return;
        }

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

                                                                  84