Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перегрука оператора * для двух разных классов 
:(
    Опции темы
Янус
Дата 22.5.2010, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 14.2.2010

Репутация: нет
Всего: нет



У меня есть два разных класса (Matrix и Vector) я хочу перегрузить для них обоих оператор *. То есть умножить матрицу на вектор. Подскажите как это можно реализовать, думаю, что через дружественную функцию, а вот дальше как не знаю. По возможности дайте коротенький примерчик или ссылочку где можно об этом узнать поподробней. Заранее спасибо за ответы. smile 
PM MAIL   Вверх
toxx
Дата 22.5.2010, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Янус
если у тебя матрица объявлена как 
Код

Vector **matrix;

то не обязательно делать другом,можно сделать так
Код

Vector Matrix::operator*(const Vector& a)
{
    Vector result(num_row);
    for(size_t i=0;i<num_row;i++)
        for(size_t j=0;j<num_col;j++)
            result[i]+=(*this)(i,j)*a[i];
    return result;
}

PM MAIL   Вверх
Янус
Дата 22.5.2010, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 14.2.2010

Репутация: нет
Всего: нет



Цитата(toxx @ 22.5.2010,  22:35)
Янус
если у тебя матрица объявлена как 
Код

Vector **matrix;


Нет, матрица определяется не так. К сожалению. И матрица и вектор определяются независимо друг от друга.
PM MAIL   Вверх
toxx
Дата 22.5.2010, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Янус
ну в любом случае делать как-то так нужно =)
 у тебя всеравно при умножении результат вектор, переделай для своего обращения думаю проще некуда это сделать.
PM MAIL   Вверх
Янус
Дата 22.5.2010, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 14.2.2010

Репутация: нет
Всего: нет



А по другому ни как ? Не хочется класс переписывать.... Придется видимо функцию умножения делать вне классов, а жаль.. Изящненько так все выглядело....
PM MAIL   Вверх
toxx
Дата 22.5.2010, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Янус
плохо значит продумали классы, если отдельно делать будете =)
PM MAIL   Вверх
djamshud
Дата 26.5.2010, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Код

class matrix{};

class vector{};

vector operator*(matrix const&,vector const&){}

int main(){
vector v;
matrix m;
vector res=m*v;
return 0;
}


Вот только я математику забыл, какой там результат умножения вектора на матрицу...

upd: tnx 2 toxx, код поправлен.

Это сообщение отредактировал(а) djamshud - 26.5.2010, 19:07


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
toxx
Дата 26.5.2010, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Цитата

Вот только я математику забыл, какой там результат умножения вектора на матрицу... 

матрицу на вектор будет вектор =)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0854 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.