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

Ваш аккаунт

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

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

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

Классы и матрицы

52K
30 апреля 2011 года
Gevorg
22 / / 10.04.2011
Доброго времени суток. Нужна помощь. Задание звучит так : разработать класс для работы с матрицами 2х2 . Кинул весь код в архиве . Он работает , просто нужно еще реализовать нахождение определителя и возведение матрицы в степень . Помогите плиз
29K
30 апреля 2011 года
Енот_в_Засаде
224 / / 09.11.2010
Цитата: Gevorg
реализовать нахождение определителя


как-то так:

 
Код:
int matrix::Determinant()
{
    return mData[0]*mData[3]- mData[1]*mData[2];
};

Цитата: Gevorg
возведение матрицы в степень


в вашем случае можно сделать в лоб (так как по условию матрица 2*2):

Код:
void matrix::PowMatr(int n)
{
    int  *result  = new int[mSizeX*mSizeY];
    int k=0;
    while(k<(mSizeX*mSizeY)){result[k++]=0;};

    int  *temp  = new int[mSizeX*mSizeY];
    int t=0;
    while(t<(mSizeX*mSizeY))
    {
        temp[t]=mData[t];
        t++;
    };
   
    for (int i=0; i<n-1; i++)
    {
        if (i<1)
        {
        result[0]=temp[0]*mData[0]+temp[1]*mData[2];
        result[1]=temp[0]*mData[1]+temp[1]*mData[3];
        result[2]=temp[2]*mData[0]+temp[3]*mData[2];
        result[3]=temp[2]*mData[1]+temp[3]*mData[3];
        }
        else
        {
            t=0;
            while(t<(mSizeX*mSizeY))
            {
                temp[t]=result[t];
                t++;
            }
            result[0]=temp[0]*mData[0]+temp[1]*mData[2];
            result[1]=temp[0]*mData[1]+temp[1]*mData[3];
            result[2]=temp[2]*mData[0]+temp[3]*mData[2];
            result[3]=temp[2]*mData[1]+temp[3]*mData[3];
        }
   
    }

    for(int i=0;i<mSizeX;i++)
    {
        for(int j=0;j<mSizeY;j++)
        {printf("[%d,%d]=%u ",i,j,result[(i*mSizeY)+j]);}
        cout<<endl;
    }
    cout<<endl;
   
};

Красивее, к сожалению, не смог придумать:(, но зато работает))

ЗЫ: после того как добавите функции в класс, не забудьте добавить объявление этих функций, ну и желательно (читай обязательно) сделать освобождение памяти, выделенной для *result и *temp
52K
01 мая 2011 года
Gevorg
22 / / 10.04.2011
спс большое )
ЗЫ : а как транспонировать матрицу ?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог