Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Navigator45
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 11
#1

Разреженные матрицы - C++

25.04.2011, 22:40. Просмотров 1919. Ответов 2
Метки нет (Все метки)

Добрый день, уважаемые пользователи.

Задание по "Разреженным матрицам" через динамический список.
Собственно сам список:

C++
1
2
3
4
struct Spisok {
     int data,n,m;  // конкретные строка и столбец, в которой храниться данное число data
     Spisok* next;
};
Сложение матриц:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Matrix Matrix::operator+(Matrix M1)const {
Matrix result;
int k;
Spisok *cur, *work, *next=result.sp->next, *first=result.sp;
if ((*this).Size(M1)){                                //Проверка на совпадение размеров матриц для сложения
 for (int i=0;i<n;i++)
  for (int j=0;j<m;j++){
   int x=0;
   x=(*this).GetData(i,j)+M1.GetData(i,j);      // GetData функция, которая возвращает значение i-й строки j-го столбца матрицы
               if (x!=0){              // Записываем только НЕ нулевые элементы, т.к. матрица разреженная
           if(k==0){           //фиксируем первый элемент
             first->data=x;
             first->m=j;
             first->n=i;
                 next=NULL;
             cur=first;
             k++;}
           else
                   {work=new Spisok;       //сохраняем целостность указателя на первый элемент
             work->data=x;          // Цепляем последующие функцией Insert(что цепляем, куда) 
             work->m=j;             
             work->n=i;
                    Insert (work, cur);
                    cur=work;}}}
}
 else return 0;
return result;
}
Проблема: не работает, после вывода результата функцией Print выдаёт билеберду

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void main(){
 Matrix M(2,2), M1(2,2), K(1,2), K1(2,1);
 M.Init();            // инициализация значениями
 M1.Init();
 K1.Init();
 M.Print();            //Вывод матрицы
 M1.Print();
 K.Print();
 K1.Print();
 K=M+M1;
K.Print();
 cout<<"this is the end";
 cin>>a;
}
Добавлено через 49 минут
Прошу прощения, забыл показать данные класса

C++
1
2
3
4
5
6
7
8
class Matrix
{
 private:
    int n,m;     //размерность матрицы [n,m]
    Spisok* sp;
.....
.....
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2011, 22:40     Разреженные матрицы
Посмотрите здесь:

Разреженные матрицы - C++
Здравствуйте, прошу помощи, какие -нибудь примеры, которые могут натолкнуть хотя бы на правильное решение поставленной задачи. Из файла...

Разреженные матрицы - C++
Даны две разреженные матрицы общего вида. Сложить их и результат занести в разреженную матрицу CSS. с меня +1)) очень нужно! спасибо...

Разреженные матрицы - C++
Как в ражреженной матрице найти количество различных элементов.

Разреженные матрицы - C++
Почитал теории по разреженным матрицам, как понял это такие матрицы, где большинство элементов равны 0. Теперь пытаюсь разобраться в...

Если след матрицы A[n][m] больше 50, то все эелементы матрицы увеличить на 2. - C++
Если след матрицы A больше 50, то все эелементы матрицы увеличить на 2.

На главной диагонали новой матрицы разместить элементы заданного столбца исходной матрицы - C++
У меня вот небольшой ступр, помогите, пожалуйста. Дана квадратная матрица действительных чисел D размерности NxN. Создать новую матрицу С...

какими средствами пользоваться для того, чтобы умножать матрицы, складывать матрицы? - C++
Кто знает скажите плз какими средствами пользоваться для того, чтобы умножать матрицы, складывать матрицы. Самому как-то лень писать эту...

Для заданной матрицы найти такие k что k-я строка матрицы совпадает с k-м столбцом - C++
П.5.4. Правил Запрещено создавать темы с бессмысленными названиями вроде &quot;Помогите!&quot;, &quot;Вопрос&quot; и т.п. Для заданной матрицы размером 8...

Разреженные матрицы - Алгебра
Ребят у меня вопрос! Если я хочу перемножить разреженные матрицы, то мне пользоваться классическим алгоритмом? Просто в разреженных...

разреженные матрицы - Delphi
Как можно сделать проверку в Delphi 7 на разреженность матрицу?

Разреженные матрицы, нужна литература - Алгебра
Ребят я занимаюсь матрицами. Если конкретно я занимаюсь параллельным программированием и перемножаю матрицы квадратного типа. Теперь мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
26.04.2011, 10:57     Разреженные матрицы #2
Navigator45, разве вы здесь правильно перегружаете оператор?
C++
1
Matrix Matrix::operator+(Matrix M1)const
Navigator45
0 / 0 / 0
Регистрация: 28.03.2011
Сообщений: 11
26.04.2011, 21:56  [ТС]     Разреженные матрицы #3
Цитата Сообщение от -comrade- Посмотреть сообщение
Navigator45, разве вы здесь правильно перегружаете оператор?
C++
1
Matrix Matrix::operator+(Matrix M1)const
В смысле?
Yandex
Объявления
26.04.2011, 21:56     Разреженные матрицы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru