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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Работа с классами, создание класса на основе класса 
:(
    Опции темы
nnln
Дата 14.1.2008, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите создать класс из класса, есть у меня класс, который делает матрицу 5 на 5, и из него надо сделать другой класс, который вычисляет сумму и произведение 2х матриц:
Код

class matrix
{ float a[5][5];
public:
matrix(){int i,j; for(i=0;i<5;i++) for(j=0;j<5;j++)
{cout<<"a["<<i<<"]["<<j<<"]=";cin>>a[i][j];}}
float matr(int i=0, int j=0){return a[i][j];}
};

Матрицы я обычно заполняю так:
Код

    srand( (unsigned)time( NULL ) );
    int i=0,j=0;
    
    for( i = 0; i < N; ++i ) {
        for (j=0; j<N; ++j) 
            matrix[i][j]=(int)(((double) rand() / (double) RAND_MAX) * (20) + (-10));

С алгоритмами тоже все ясно, вроде, вот:
Сумма:
Код

for( i = 0; i < N; ++i ) {
        for (j=0; j<N; ++j) a[i][j]+=b[i][j];}

Умножение, вот тут чего может быть неправильно, строка умножается на столбец:
Код


for (i = 0; i < 5; i++)
{
 for (j = 0; j < 5; j++)
 {
  m3[i][j] = 0;
  for (k = 0; k < 5; k++)
   m3[i][j] += m1[k][j]*m2[i][k];
 }
}

Но с классами у меня, мягко говоря слабо, вообщем помогите пожалуйста.
PM MAIL   Вверх
Lazin
Дата 14.1.2008, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



а зачем для этого еще один класс? просто переопредели операторы сложения, умножения матриц

Код

class matrix
{ 
    float a[5][5];
public:
    matrix()
    {
        for(int i=0; i<5; i++) 
            for(int j=0; j<5; j++)
                a[i][j] = 0;
    }
    void read_from_stdin()
    {
        int i,j; 
        for(i=0;i<5;i++) 
            for(j=0;j<5;j++)
                {
                    cout<<"a["<<i<<"]["<<j<<"]=";cin>>a[i][j];
                }
    }
    float operator () (int i=0, int j=0)//обращаться к элементу можно теперь так  float а = m(1,2);
    {
        return a[i][j];
    }
    matrix operator + /* - */(const matrix& m)
    {
    //сюда пишешь свой алгоритм сложения матриц
    }
    matrix operator * (const matrix& m)
    {
    //сюда пишешь свой алгоритм умножения матриц
    }    
};


когда напишешь код операторов * + -, сможешь писать что-то вроде этого : 
Код

matrix a,b,c;
....
a = b*c;



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

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

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

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

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


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

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


 




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


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

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