Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2008, 20:50   #1
Ruslan-9031
Новичок
Джуниор
 
Регистрация: 28.11.2008
Сообщений: 1
По умолчанию Работа с разреженными матрицами

Привет всем!!! Люди, кто знает как работать с разреженными матрицами??? Нужно реализовать перевод разреженной матрицы в 3 массива (массив с номерами строк, номерами столбцов, самими значениями). Ну и надо умножать, складывать такие разреженные матрицы.
Например, нам дана разреженная матрица 3*3:
0 2 0
0 0 3
1 0 8
Переводим в массивы:
Массив строк: 0 1 2 2
Массив столбцов: 1 2 0 2
Элемент матрицы: 2 3 1 8
Помогите пожалуйста, а то я уже замучался!!!!!!!!!

Вот примерный код:
Код:
#include <stdafx.h>
#include <iostream>
using namespace std;

const int x = 1000;
int Line[x];
int Column[x];

int main()
{
	setlocale(LC_ALL, "Russian");
	int n, m, a, b, x, y;
	cout << "Введите размерность матрицы: ";
	cin >> n;

	int **Matrix = new int*[n]; 
	for(int i = 0; i < n; i++)
		Matrix[i] = new int[n];

	cout << "\n" << "Введите элементы матрицы:" << "\n";
	
	for(int i = 0; i < n; i++)
	{
		for(int j = 0; j < n; j++)
		{
			cout << "A" << "[" << i+1 << "]" << "[" << j+1 << "] = ";
			cin >> Matrix[i][j];
		}
	}
	cout << "\n" << "Матрица A:" << "\n";
	
	for(int i = 0; i < n; i++)  
	{
		for(int j = 0; j < n; j++)
		{ 
			cout << Matrix[i][j] << " ";  
		} 
		cout << "\n";
	}
    m = 0;
	for(int i = 0; i < n; i++)  
	{
		for(int j = 0; j < n; j++)
		{ 
			if(Matrix[i][j] != 0)
			{
				m++;
			}
		}
	}

	int **Maxrix_1 = new int *[m];
	for(int i = 0; i < m; i++)
		Maxrix_1[i] = new int [m];

	for(int i = 0; i < 3; i++)
	{
		for(int j = 0; j < m; j++)
		{
			Maxrix_1[i][j] = 0;
		}
	}

	for(int i = 0; i < n; i++)  
	{
		for(int j = 0; j < n; j++)
		{ 
			if(Matrix[i][j] != 0)
			{
				Maxrix_1[1][j] = i;
				Maxrix_1[2][j] = j;
				Maxrix_1[3][j] = Matrix[i][j];
			}
		}		
	}

	cout << "\n";
	for(int i = 0; i < 3; i++)
	{
		for(int j = 0; j < m; j++)
		{
			cout << Maxrix_1[i][j] << " ";
		}
		cout << "\n";
	}

	cout << "\n";
	system("pause");
}
Модератор: используйте тэг CODE

Последний раз редактировалось MaTBeu; 29.11.2008 в 18:44.
Ruslan-9031 вне форума Ответить с цитированием
Старый 29.11.2008, 18:07   #2
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

если нужна помощь (не за бесплатно)
обращайся 382 шесть шесть шесть 671
StarWorm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицами в паскале Andris Помощь студентам 7 29.05.2009 21:56
Работа с матрицами. Массивы. Xeon332 Помощь студентам 9 16.01.2008 21:03
help!!! работа с матрицами Zagran Паскаль, Turbo Pascal, PascalABC.NET 4 08.01.2007 15:54