ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
// адрес, в противном случае exists
// остается равным NULL
if (current != NULL && current->a.i == i &&
current->a.j == j)
exists = current;
return exists;
}
Сложение двух матриц заключается в создании нового списка на
основании двух существующих. Если оба исходных списка содержат
элементы с одинаковыми индексами, сумма их значений образует
соответствующий элемент нового списка. Остальные элементы обоих
списков просто дублируются в новом.
// операция сложения двух матриц
MatrixList MatrixList::operator+(MatrixList& ob)
{
// матрицы должны иметь одинаковые размеры
if(m != ob.m || n != ob.n)
throw BadDimensionException(m, n,ob.m, ob.n);
// создается матрица-результат
// как копия первого слагаемого
MatrixList temp(*this);
ListElement* current = ob.head;
ListElement* exists;
// просмотр элементов второй матрицы
while (current != NULL)
{
exists = temp.ExistsElement(current->a.i,
current->a.j);
if (exists != NULL)
// если в матрице-результате элемент
// с такими индексами уже имеется,
// суммируем элементы
exists->a.value += current->a.value;
else
// если в матрице-результате элемент с
// такими индексами не существует,
// добавляем новый элемент
// в матрицу-результат
temp.AddElement(current-> a.i, current->a.j,
current->a.value);
current = current->next;
}
return temp;
}
176
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
// адрес, в противном случае exists
// остается равным NULL
if (current != NULL && current->a.i == i &&
current->a.j == j)
exists = current;
return exists;
}
Сложение двух матриц заключается в создании нового списка на
основании двух существующих. Если оба исходных списка содержат
элементы с одинаковыми индексами, сумма их значений образует
соответствующий элемент нового списка. Остальные элементы обоих
списков просто дублируются в новом.
// операция сложения двух матриц
MatrixList MatrixList::operator+(MatrixList& ob)
{
// матрицы должны иметь одинаковые размеры
if(m != ob.m || n != ob.n)
throw BadDimensionException(m, n,ob.m, ob.n);
// создается матрица-результат
// как копия первого слагаемого
MatrixList temp(*this);
ListElement* current = ob.head;
ListElement* exists;
// просмотр элементов второй матрицы
while (current != NULL)
{
exists = temp.ExistsElement(current->a.i,
current->a.j);
if (exists != NULL)
// если в матрице-результате элемент
// с такими индексами уже имеется,
// суммируем элементы
exists->a.value += current->a.value;
else
// если в матрице-результате элемент с
// такими индексами не существует,
// добавляем новый элемент
// в матрицу-результат
temp.AddElement(current-> a.i, current->a.j,
current->a.value);
current = current->next;
}
return temp;
}
176
Страницы
- « первая
- ‹ предыдущая
- …
- 174
- 175
- 176
- 177
- 178
- …
- следующая ›
- последняя »
