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

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

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

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

25.04.2011, 22:40. Просмотров 1966. Ответов 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;
.....
.....
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2011, 22:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разреженные матрицы (C++):

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

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

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

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

Матрицы. Найти и распечатать сумму элементов 5-го столбца матрицы А и сумму элементов последней строки матрицы В - C++
Даны две матрицы А(mxn)и В(m1xn1).программа находит и распечатывает сумму элементов 5-го столбца матрицы А и сумму элементов последней...

Зеркально отразить элементы матрицы относительно горизонтальной оси симметрии матрицы - C++
Здравствуйте! Помогите написать 3 программмы на C++ на задачи с двумерными массивами 3. Дана матрица размера M x N. Зеркально...

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

Преобразование матрицы (удалить из матрицы столбец с наибольшей по модулю суммой элементов) - C++
Всем привет, есть программа для ввода матрицы и вывода на экран. Нужно удалить из матрицы столбец с наибольшей по модулю суммой элементов. ...

Матрицы. Программа, которая удаляет столбец матрицы, содержащий максимальный ее элемент - C++
Я новичок в с++...поэтому оооочень нужна Ваша помощь!!! Необходимо написать программу, которая удаляет столбец матрицы, содержащий...

Найти количество элементов матрицы, которые совпадают с элементами другой матрицы - C++
Помогите найти количество элементов 2 мерного массива, которые совпадают с элементами другого аналогичного массива. Массив 5х3.

Для матрицы найти такие k, что k-я строка матрицы совпадает с k-м столбцом - C++
Помогите пожалуйста с первой частью задания: найти такие k. что k -строка матрицы совпадает с k-м столбцом. При компиляции выдается...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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