ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
// адрес, в противном случае 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
- …
- следующая ›
- последняя »