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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2011, 10:54   #1
hello19
Пользователь
 
Регистрация: 19.07.2011
Сообщений: 18
По умолчанию Не получается написать код

Хай! Тут такое дело... В матрице есть несколько нулевых строчек и нулевых столбцов. Надо их "вычеркнуть" из матрицы и вывести полученный результат. Вот например так:
Из такой вот матрицы:
1 2 0 3
4 5 0 6
0 0 0 0
7 8 0 9
Получить такую:
1 2 3
4 5 6
7 8 9
Что то не соображу как.. помогите с кодом.
hello19 вне форума Ответить с цитированием
Старый 04.08.2011, 13:52   #2
hello19
Пользователь
 
Регистрация: 19.07.2011
Сообщений: 18
По умолчанию

Можно например просто удалить вот так delete[] matrix[i]. Это строку/столбец не удалит - только освободит память, где она лежала. Но все указатели (и место в массиве под нее) останется.
а при выводе можно делать так:
Код:
int main()
{
	int range = 5;


	// Allocate matrix
	double **matrix = new double*[range]();
	for (int i = 0; i < range; i++) 
	{
		matrix[i] = new double[range]();
	}


	// reading from file
	ifstream ifs("aa.txt");
	double q;
	int i = 0;
	int j = 0;
	while ( ifs >> q )
	{
		matrix[i][j] = q;
		j++;
		if ( j % range == 0 ) { i++; j = 0;}
	}
	ifs.close();
	// delete nessesary colums and rows
	
	for ( int i = 0; i < range; i++ )
	{
		if ( matrix[i][i] == 0 )
		{
			inf << i << endl;
			k++;
			delete[] matrix[i];
			matrix[i]=NULL;
		}
	}
	inf.close();
	// output matrix 
	ofstream ofs("bb.txt");
	for (int i = 0; i < range-k; i ++)
	{
		if ( matrix[i][i]!=NULL)
		{
			for (int j = 0; j < range-k; j++)
			{
				ofs << matrix[i][j] << " ";
			} ofs << endl;
		}
	}
	ofs.close();
	for ( int i =0; i < range-k; i++)
	delete[] matrix[i];
	delete[] matrix;
}
Т.е. мы просто не выводим пустые строчки....
Вроде неплохая идея(это намного производительней, чем сдвигать строчки\столбцы), а вот реализация хромает.. падает прога
hello19 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не получается написать программу (ассемблер) Стас_с Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 08.07.2011 21:53
не получается написать на С++ задачу на строки MAX_150275 Помощь студентам 3 13.05.2011 20:41
не получается написать прогу serga71 Паскаль, Turbo Pascal, PascalABC.NET 0 17.03.2011 05:44
Не получается написать код для File>Open fs444 C++ Builder 4 25.08.2009 09:26
не получается разобраться в коде ! разъясните пожалуйста! код внутри! Lion_paint Паскаль, Turbo Pascal, PascalABC.NET 2 16.05.2009 09:30