Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Матрицы

500
11 марта 2002 года
waste
26 / / 20.04.2000
У кого есть возможности, помогите написать программку для умножения матриц. Программа должна работать в текстовом режиме. Принцип следущий:
1. Пользователь вводит количество строк и столбцев (например 4 x 4)
2. Вызываеться функция в которой резервируеться память(с помощью new или calloc)
3. В этой же функции происходит умножение таблиц и за тем возврат результата в main
Желательно, что бы в программе использовались указатели
(А вообще можно ли без них ?). Кто может, помогите советом или исходником.....
545
12 марта 2002 года
Посторонний
74 / / 20.05.2000
Цитата:

On 2002-03-11 1932, waste wrote
У кого есть возможности, помогите написать программку для умножения матриц. Программа должна работать в текстовом режиме. Принцип следущий
1. Пользователь вводит количество строк и столбцев (например 4 x 4)
2. Вызываеться функция в которой резервируеться память(с помощью new или calloc)
3. В этой же функции происходит умножение таблиц и за тем возврат результата в main
Желательно, что бы в программе использовались указатели
(А вообще можно ли без них ?). Кто может, помогите советом или исходником.....


А чего тут писать-то...создаешь консольное приложение (или вообще пишешь на ВС++), алгоритм умножения матриц, надеюсь для тебя не секрет , указатели можешь использовать для задания матриц.

742
12 марта 2002 года
Crush
4 / / 20.01.2000
Цитата:

On 2002-03-11 1932, waste wrote
У кого есть возможности, помогите написать программку для умножения матриц. Программа должна работать в текстовом режиме. Принцип следущий
1. Пользователь вводит количество строк и столбцев (например 4 x 4)
2. Вызываеться функция в которой резервируеться память(с помощью new или calloc)
3. В этой же функции происходит умножение таблиц и за тем возврат результата в main
Желательно, что бы в программе использовались указатели
(А вообще можно ли без них ?). Кто может, помогите советом или исходником.....



Есть исходник, как раз то, что тебе нужно, даже больше. У меня курсовая на эту тему была. Только я ща на работе, а все это хозяйство дома. Завтра притащу.

500
13 марта 2002 года
waste
26 / / 20.04.2000
Цитата:

On 2002-03-12 0258, Посторонний wrote
[quote]
On 2002-03-11 1932, waste wrote
У кого есть возможности, помогите написать программку для умножения матриц. Программа должна работать в текстовом режиме. Принцип следущий
1. Пользователь вводит количество строк и столбцев (например 4 x 4)
2. Вызываеться функция в которой резервируеться память(с помощью new или calloc)
3. В этой же функции происходит умножение таблиц и за тем возврат результата в main
Желательно, что бы в программе использовались указатели
(А вообще можно ли без них ?). Кто может, помогите советом или исходником.....


А чего тут писать-то...создаешь консольное приложение (или вообще пишешь на ВС++), алгоритм умножения матриц, надеюсь для тебя не секрет , указатели можешь использовать для задания матриц.
[/quote]
Все ты конечно грамотно изложил....но помог ли ты мне хоть чуток своим "умным" советом ?
Я не знаю алгоритм умножения матриц....помоему это вполне ясно из самого вопроса...

742
14 марта 2002 года
Crush
4 / / 20.01.2000
Не нашел я исходников, видно убил я их...
Алгоритм умножения матриц прост.
Пример Есть две матрицы А - с размерностью n x m, где m - кол-во столбцов, а n - кол-во строк; и марица B с размерностью r x t. Условие таково, что m должно равняться r. При этом получается матрица C размерностью n x t.
Элементы матрицы C вычисляются по формуле
c(ij)= a(i1)*b(1j)+...+a(im)*b(tj)
Вот и все.

Дикларировать динамический массив можно так

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

m и n задаешь сам.

Я бы посоветовал определить класс марицы в котором можно было бы перегрузить операции присваивания, умножения, сложения и т.д.

Тогда операция умножения двух матриц не требовала бы вызова функции и выглядело вы это таким образом

c=a*b;

Если нужна более подробная инфа - пиши на мыло.
94K
02 октября 2014 года
angangell
1 / / 02.10.2014
Посмотри здесь http://orenstudent.ru/MatrixDelphi.htm
Вроде,простенький такой калькулятор матриц с исходным кодом
392
02 октября 2014 года
cronya
421 / / 03.01.2009
перемножаешь элементы строк 1 матрицы со элементами столбцов 2 матрицы по индексам и нечего более, ограничения на размер накладывается числом строк 1 матрицы и числом столбцов второй, т.е. они должны быть равны. Формулы просты
392
02 октября 2014 года
cronya
421 / / 03.01.2009
Цитата: Crush

Дикларировать динамический массив можно так

int **a;
a = new int [n];
for (i=0; i<n; i++)
a= new int [m];
.


неправильно, есть ошибки

 
Код:
int **a = new int*[row];
for(int idx=0; idx<row; idx++)
{
    a[idx] = new int[column];
}
правильно так, и так к сведению это статический массив, не путайте динамическую память с динамическим массивом:
первое связано с выделение памяти во время выполнения программы, второе с добавлением нового элемента, классический пример связный список. Массивы динамические обычно требуют реорганизацию памяти по принципу realloc, т.е перераспределение блоков памяти. А у вас тут статический массив с фиксированной размерностью, с использованием динамической памяти.
326
02 октября 2014 года
sadovoya
757 / / 19.11.2005
Цитата:
это статический массив, не путайте динамическую память с динамическим массивом:
первое связано с выделение памяти во время выполнения программы, второе с добавлением нового элемента


cronya, не будьте столь категоричны. Многие с вами не согласятся. Даже не уверен, что эта терминология устоявшаяся.
Я думаю, что все, что через new - динамическое, в смысле на этапе выполнения. Статическое - то, что компилятор может выделить на этапе компиляции (для стека, например).

P.S. Статический, динамический -- по этапу компиляции/выполнения. Переменной длины - третье понятие. Переменной длины может быть только дин. массив. Но динамич. массив не обязан иметь переменную длину, хотя может. Примерно так. Но тут возможно и со мной не все согласятся :)

392
03 октября 2014 года
cronya
421 / / 03.01.2009
Цитата:
cronya, не будьте столь категоричны.


Говорю как учили в университете. Хочю лишь сказать одно: в милкософтовских библиотеках нет не малейшего упоминая про динамический массив типа матриц через операторы new. Вы можете считать как угодно, ваше право, я считаю, что верно так.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог