|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.01.2010, 11:18 | #1 |
Пользователь
Регистрация: 21.12.2007
Сообщений: 15
|
Составить функцию для умножения матрицы matr из n строк и m столбцов на вектор vect (из n элементов)
Составить функцию для умножения матрицы matr из n строк и m столбцов на вектор vect (из n элементов) с размещением результата в массиве res:
void matrvect(int n, int m, float *matr, float *vect, float *res). |
12.01.2010, 11:54 | #2 |
Форумчанин
Регистрация: 18.10.2009
Сообщений: 185
|
Ну во первых батенька: умножить матрицу размером n x m на вектор n x 1 не возможно.
Можно умножить например матрицу n x m на вектор m x 1. Ну да ладно. Предположим что вам всётаки надо умножить матрицу n x m на вектор m x 1 Код:
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает." Последний раз редактировалось val_nnm; 12.01.2010 в 11:59. |
12.01.2010, 12:21 | #3 |
Пользователь
Регистрация: 21.12.2007
Сообщений: 15
|
OK,СПС. ЗНАЧИТ ЗАДАНИЕ НЕ ВЕРНО???
ПОДСКАЖИ, КАК ПРОВЕРИТЬ |
12.01.2010, 14:04 | #4 |
Форумчанин
Регистрация: 18.10.2009
Сообщений: 185
|
Ну почитай теорию про умножение матриц напимер вот
http://ru.wikipedia.org/wiki/Умножение_матриц там сказанно "Операция умножения двух матриц выполнима только в том случае, если число столбцов в первом сомножителе равно числу строк во втором; в этом случае говорят, что форма матриц согласована" это если по правилам умножения матриц. То только так. Если бы там было сказано что умножать элементы какимто особенным образом. Но это уже не будет умножене матриц, а будет какаято совсем другая операция над матрицами. В принципе возможно сделать наоборот. умножить вектор размером 1 x n на матрицу размером n x m. Но не наоборот. А чтобы проверить правельность работы кода. Нужно написать программу. Которая будет создавать какуюнибуть матрицу и вектор, а затем будет вызывать нашу функцию, и выводить результат на экран. И эти же данные расчитать самому, и сравнить их. Ну функция вроде малленькая, несколько раз пересмотрел, вроде ошибок нет.
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает." Последний раз редактировалось val_nnm; 12.01.2010 в 14:32. |
12.01.2010, 14:28 | #5 |
Пользователь
Регистрация: 21.12.2007
Сообщений: 15
|
ОК, А С ФУНКЦИЕЙ ПОМОЖЕШ???
|
12.01.2010, 14:35 | #6 |
Форумчанин
Регистрация: 18.10.2009
Сообщений: 185
|
Так это же и есть готовая функция. Или ты имееш ввиду с программой?
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает." |
12.01.2010, 14:55 | #7 |
Участник клуба
Регистрация: 29.12.2009
Сообщений: 1,166
|
а что вы хотите получить умножением матрицы на вектор? Насколько я думаю можно получить только вектор
matr[i*m+j] - вы представляете, что такое матрица и массив? не путаете здесь? по условию-то у нас матрица! и еще как минимум здесь произойдет выход за пределы массива (если вы здесь имели ввиду массив)
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть] |
12.01.2010, 15:11 | #8 |
Форумчанин
Регистрация: 18.10.2009
Сообщений: 185
|
Нет я какразтаки не путаю что такое матрица и массив. Просто в C двумерный массив (он же матрица) заранее неизвестного размера передать в функцию нельзя (покрайней мере мне не известен такой способ). все массивы передаются только ссылками на первый их элемент. И в функции мы уже работаем с ними как с одномерным массивом. Соответственно в функции мы получаем не двумерный массив [m,n] а одномерный [m*n]. В котором элементы второй строки идут сразу после эементов первой строки. Элементы третьей строки сразу за элементами второй строки и.т.д.
Конечно в основной программе мы должны сразу создавать массив точно заданной размерности. Если например в основной программе мы создадим двумерный массив с запасом например из [100,100] элементов а будем использовать только [5,5] то тогда будут проблеммы. А если мы будем сразу создавать нужного размера то проблемм не будет. Ну а в результате му действительно здесь получаем вектор (массив res). Ну а если вы дейтсвительно хотите создавать в основной программе массивы с запасом то тогда нужно добавить ещё один параметр в нашу функцию. Код:
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает." Последний раз редактировалось val_nnm; 12.01.2010 в 15:24. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите с поиском max элементов строк матрицы в Паскале | annexion | Помощь студентам | 4 | 05.04.2010 10:44 |
составить функцию для вычисления значения y=P(x) многочлена для заданного аргумента x | KASPEER | Помощь студентам | 2 | 12.01.2010 15:03 |
(c++) Сортировка строк матрицы по возрастанию первых элементов | Serg046 | Помощь студентам | 3 | 07.01.2010 23:17 |
сумма максимальных значений элементов столбцов матрицы | motaro | Помощь студентам | 2 | 26.11.2009 19:00 |
Создать вектор из элементов матрицы | Dayterius | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 20.05.2009 12:32 |