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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2013, 16:44   #1
uibiwe
Пользователь
 
Регистрация: 08.03.2013
Сообщений: 10
По умолчанию транспонировать матрицу используя функции

Код:
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
main()
{
    clrscr();
    randomize();
    int a[50][50], i, j, k, l, r;
    cout<<"k=";
    cin>>k;
    cout<<"l=";
    cin>>l;
    for(i=0; i<k; i++)
	for(j=0; j<l; j++)
	     a[i][j]=random(15);
    cout<<"MAtrix:\n";
    for(i=0; i<k; i++)
    {
	 for(j=0; j<l; j++)
	     cout<<" "<<a[i][j];
	 cout<<"\n";
    }
    cout<<"Transp.:\n\n";
    for(i=0; i<k; i++)
	for(j=0; j<l; j++)
	{
	     r=a[i][j];
	     a[i][j]=a[j][i];
	     a[j][i]=r;
	}
    for(i=0; i<k; i++)
    {
	for(j=0; j<l; j++)
	    cout<<a[j][i]<<" ";
	cout<<"\n";
    }
    while(!kbhit());
    return 0;
}
матрицу транспонировал, а как использовать функции ума не приложу.
буду очень благодарен если кто поможет.
можно сделать и на VC, просто я еще не установил VC, вот пришлось сделать в борланде
uibiwe вне форума Ответить с цитированием
Старый 26.03.2013, 13:08   #2
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

О, ну в функции типа так:

Код:
функция по созданию массива
{
....
}

функция по транспонированию массива
{
....
}

функция по выводу массива
{
...
}

главная функция (main)
{
создать массив();
транспонировать();
вывести();
}

самое главное:
Динамический массив можно передавать в функцию
Статический массив нельзя передавать в функцию.
Если у вас только статический, то сделайте его "глобальным статическим массивом".
Вооот, как бы так)
Fanyuus вне форума Ответить с цитированием
Старый 26.03.2013, 16:05   #3
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Статический массив нельзя передавать в функцию.
Глупость. Он так же, как и динамический, передается по ссылке.

Цитата:
Если у вас только статический, то сделайте его "глобальным статическим массивом".
Никогда не делайте переменные глобальными, если в этом нет крайней необходимости.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 26.03.2013, 18:04   #4
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

Хм, странно - мне кто-то здесь так и написал "динамический - да, тот - нет".
Ну ладно)
Fanyuus вне форума Ответить с цитированием
Старый 26.03.2013, 18:59   #5
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Код:
int* p1,p2;
int mas[5];
p1=&mas[0]; //поидее можно вообще написать p=&mas;
p2= new int[5];
Вот и все... нет никакой разницы между работой с указателями p1 и p2.

Единственное что, не очень удобно работать с многомерными массивами, поскольку вам самим придется вычислять, где у вас начинается новая строка.
В случае матрицы 50х50 у вас первые 50 элементов - первая строка (точнее нулевая), следующие - вторая (точнее первая) и т.д.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 26.03.2013 в 19:08.
ROD вне форума Ответить с цитированием
Старый 28.03.2013, 22:50   #6
DAVID973
Пользователь
 
Регистрация: 10.03.2012
Сообщений: 16
По умолчанию

Код:
#include <iostream>
#include <stdlib.h>
#include <vector>
#include <conio.h>

using namespace std;

typedef vector<unsigned> Un_Vector;
typedef vector<Un_Vector> Un_Matrix;
 

void TRANSPONIROVANIE (const Un_Matrix &Matrix_input, Un_Matrix &Matrix_output, const unsigned &ONE, const unsigned &TWO)
{
	unsigned one, two;

	for (one=0; one<TWO; one++)
	{
		Matrix_output.push_back(Un_Vector());
		
		for (two=0; two<ONE ;two++)
		Matrix_output[one].push_back(Matrix_input[two][one]);
	}
}


int main()
{
	setlocale(0,"Russian");
	
	Un_Matrix Matrix_begin, Matrix_end;
	unsigned one, two, ONE, TWO, spec;

	cout << "Введите размерность матрицы [?][] (количество строк)    "; 
	cin  >> ONE; cout << endl;
	cout << "Введите размерность матрицы [][?] (количество столбцов) "; 
	cin  >> TWO; cout << endl;
	cout << "Введите элементы матрицы: " << endl;

	for (one=0; one<ONE; one++)
	{
		Matrix_begin.push_back(Un_Vector());
		cout << endl;

		for (two=0; two<TWO ;two++)
		{
	                cout << " ["<< one+1 << "][" << two+1 << "]   =   "; 
			cin  >> spec;
			Matrix_begin[one].push_back(spec);
		}
	}

	TRANSPONIROVANIE (Matrix_begin, Matrix_end, ONE, TWO);
	cout << endl << "Вывод элементов матрицы после транспонирования: " << endl;

	for (one=0; one<TWO; one++)
	{
		cout << endl;
		
		for (two=0; two<ONE ;two++)
	        cout << " ["<< one+1 << "][" << two+1 << "]   =   " << Matrix_end[one][two] << "     "; 
	}

	_getch();
	return 0;
}

Последний раз редактировалось DAVID973; 28.03.2013 в 23:06. Причина: Ошибка
DAVID973 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# транспонировать матрицу xq1b Помощь студентам 2 21.11.2012 16:02
Транспонировать матрицу на паскале sidestep Паскаль, Turbo Pascal, PascalABC.NET 1 24.09.2011 15:54
Транспонировать матрицу A(n,n).В А транспонированной(N,N) найти max эл. в послед. столбце.(язык QBasic) Лиза) Помощь студентам 5 29.12.2010 23:58
Транспонировать матрицу Nerside92 Помощь студентам 1 24.12.2009 21:40
Транспонировать матрицу(Без исп. доп. массивов)) Doublefaced Помощь студентам 4 27.06.2009 13:03