Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2014, 22:29   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию Возвратить тип шаблона,так чтобы результат при вызове присваивался объекту

Есть матрица,нужно создать новую матрицу и "перевернуть" (т.е. столбцы становятся строками,а строки-стобцами)-это сделано. Потом нужно сделать так,чтобы метод возвращал такое значение (типа array<T>),чтобы его можно было присвоить новому объекту в main. Я не знаю,как cделать так,чтобы новая матрица могла бы находиться в этом новом объекте из main.
Код:
#include "stdafx.h"
#include <iostream>
#include <cstring>
using namespace std;
 
template <typename T>
class array
{
private:
    T **p; //базовая матрица
    int size;
    int row,column;
public:
    array(int a,int b)
    {
        row=a;column=b;
        //cout<<" a= "<<a;
        p=new int *[a*b];
        for(int i=0;i<(a*b);i++)
        
            p[i]=new int[(a*b)];    
    }
 
 
    ~array(){for(int i=0;i<row*column;i++) delete [] p[i]; };
    void enter();
    void copycolumn();
    void copyrow(const array<T>&);
    void choose();
    void show();
};
 
int main()
{
    array <int> myArray(2,3);
    cout << "Enter numbers for matrix: \n";
     myArray.enter();
    cout << "Matrix: \n";
    myArray.show();
    myArray.copycolumn();
    
    myArray.copyrow(myArray); //метод,который должен возвращать это значение
    
    myArray.choose();
 
}
void array<T>::copyrow(const array<T> &myArray)
{
 
    array <int> myArray1(myArray); //думаю,здесь нужно тоже объявить объект,чтобы его возвращать,но как именно //в этот объект поместить новую матрицу????
    cout<<"\n";
    int **r=new int*[column*row]; //новая матрица
    for(int i=0;i<(column*row);i++)
        {
            r[i]=new int[column*row];   
        }
 
        cout<<"\nCopy mtx:\n";
    for(int i=0;i<column;i++)
            for(int j=0;j<row;j++)              
    {   
        r[j][i]=p[j][i];
        
    }
 
        for(int i=0;i<column;i++)
        {   cout<<"\n";
            for(int j=0;j<row;j++)      
                cout<<r[j][i]<<" ";
                
            
        }
 
 //return myArray1;
}
Вероника99 вне форума Ответить с цитированием
Старый 09.05.2014, 19:08   #2
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Что никто не знает?(
Вероника99 вне форума Ответить с цитированием
Старый 10.05.2014, 15:02   #3
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Я уже разобралась,что нужно было делать. Я просто в методе copyrow создала объект и в классе создала конструктор копирования,в котором "переворачивается" матрица,таким образов в этом методе я вызывают конструктор копирования для нового объекта и возвращаю объект в main,где присваиваю возвращаемый результат еще одному новому объекту.Это как раз то,что и требовалось сделать)
Вероника99 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так чтобы при наведение мыши subbota HTML и CSS 3 03.03.2016 09:36
найти разницу между двумя датами, а результат записать в письменном виде, так чтобы было согласование между падежами KatanaZh Microsoft Office Excel 15 27.11.2012 00:11
Пвивет как зделат так чтобы так чтобы в edit...... vmilyoshin Помощь студентам 9 23.09.2011 02:48
Возвратить указатель на массив результат Calv Общие вопросы C/C++ 13 22.07.2011 23:17