Матрицы
1. Пользователь вводит количество строк и столбцев (например 4 x 4)
2. Вызываеться функция в которой резервируеться память(с помощью new или calloc)
3. В этой же функции происходит умножение таблиц и за тем возврат результата в main
Желательно, что бы в программе использовались указатели
(А вообще можно ли без них ?). Кто может, помогите советом или исходником.....
On 2002-03-11 1932, waste wrote
У кого есть возможности, помогите написать программку для умножения матриц. Программа должна работать в текстовом режиме. Принцип следущий
1. Пользователь вводит количество строк и столбцев (например 4 x 4)
2. Вызываеться функция в которой резервируеться память(с помощью new или calloc)
3. В этой же функции происходит умножение таблиц и за тем возврат результата в main
Желательно, что бы в программе использовались указатели
(А вообще можно ли без них ?). Кто может, помогите советом или исходником.....
А чего тут писать-то...создаешь консольное приложение (или вообще пишешь на ВС++), алгоритм умножения матриц, надеюсь для тебя не секрет , указатели можешь использовать для задания матриц.
On 2002-03-11 1932, waste wrote
У кого есть возможности, помогите написать программку для умножения матриц. Программа должна работать в текстовом режиме. Принцип следущий
1. Пользователь вводит количество строк и столбцев (например 4 x 4)
2. Вызываеться функция в которой резервируеться память(с помощью new или calloc)
3. В этой же функции происходит умножение таблиц и за тем возврат результата в main
Желательно, что бы в программе использовались указатели
(А вообще можно ли без них ?). Кто может, помогите советом или исходником.....
Есть исходник, как раз то, что тебе нужно, даже больше. У меня курсовая на эту тему была. Только я ща на работе, а все это хозяйство дома. Завтра притащу.
On 2002-03-12 0258, Посторонний wrote
[quote]
On 2002-03-11 1932, waste wrote
У кого есть возможности, помогите написать программку для умножения матриц. Программа должна работать в текстовом режиме. Принцип следущий
1. Пользователь вводит количество строк и столбцев (например 4 x 4)
2. Вызываеться функция в которой резервируеться память(с помощью new или calloc)
3. В этой же функции происходит умножение таблиц и за тем возврат результата в main
Желательно, что бы в программе использовались указатели
(А вообще можно ли без них ?). Кто может, помогите советом или исходником.....
А чего тут писать-то...создаешь консольное приложение (или вообще пишешь на ВС++), алгоритм умножения матриц, надеюсь для тебя не секрет , указатели можешь использовать для задания матриц.
[/quote]
Все ты конечно грамотно изложил....но помог ли ты мне хоть чуток своим "умным" советом ?
Я не знаю алгоритм умножения матриц....помоему это вполне ясно из самого вопроса...
Алгоритм умножения матриц прост.
Пример Есть две матрицы А - с размерностью 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;
Если нужна более подробная инфа - пиши на мыло.
Вроде,простенький такой калькулятор матриц с исходным кодом
Дикларировать динамический массив можно так
int **a;
a = new int [n];
for (i=0; i<n; i++)
a= new int [m];
.
неправильно, есть ошибки
for(int idx=0; idx<row; idx++)
{
a[idx] = new int[column];
}
первое связано с выделение памяти во время выполнения программы, второе с добавлением нового элемента, классический пример связный список. Массивы динамические обычно требуют реорганизацию памяти по принципу realloc, т.е перераспределение блоков памяти. А у вас тут статический массив с фиксированной размерностью, с использованием динамической памяти.
первое связано с выделение памяти во время выполнения программы, второе с добавлением нового элемента
cronya, не будьте столь категоричны. Многие с вами не согласятся. Даже не уверен, что эта терминология устоявшаяся.
Я думаю, что все, что через new - динамическое, в смысле на этапе выполнения. Статическое - то, что компилятор может выделить на этапе компиляции (для стека, например).
P.S. Статический, динамический -- по этапу компиляции/выполнения. Переменной длины - третье понятие. Переменной длины может быть только дин. массив. Но динамич. массив не обязан иметь переменную длину, хотя может. Примерно так. Но тут возможно и со мной не все согласятся :)
Говорю как учили в университете. Хочю лишь сказать одно: в милкософтовских библиотеках нет не малейшего упоминая про динамический массив типа матриц через операторы new. Вы можете считать как угодно, ваше право, я считаю, что верно так.