функция для размерности

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Евгений Александрович
Сообщения: 82
Зарегистрирован: 19 дек 2009, 16:48

Проблема: после добавления функции size(), а она для ввода размерности матрицы, код "ложится". Что у меня не так??

Код: Выделить всё

class matrix
{ 
private:
        int n,m,i,j;
        int **matrica;
public: 
        matrix ();
        ~matrix(){}; 
        int get(int ,int);
        void print();
		int size(int ,int);
};
int matrix::size(int n,int m)
 {
        cout<<"input the n:";
        cin>>n;   
        cout<<"input the m:";
        cin>>m;
		return 0;
 }
matrix::matrix()
{      
        matrica=new int*[n];
        for ( i = 0; i < n; i++)
                matrica[i] = new int[m];
 
        for ( i = 0; i < n; i++)
               for ( j = 0; j < m; j++)
                        matrica[i][j] = rand() % 10;
 }
void matrix: :p rint()
{
     for( i = 0; i < n; i++)
     {
         for(j = 0; j < m; j++)
               cout<<matrica[i][j]<<' ';
         cout<<"\n";
     }

}
 
int matrix::get(int i,int j)
{
         if(i>=n||j>=m)
            return 0;
         cout<<matrica[i][j]<<'\n';
}
 
int main ()
{  
	int m,n;
        system("cls");
        matrix object;
		object.size(n,m);
        object.print();
        int i, j;
		cout<<" get (i.j):"<<endl;
        cout<<"Enter i: ";
        cin>>i;
        cout<<"Enter j: ";
        cin>>j;
        if(object.get(i,j)==0)
           cout<<"i or j more or equal than n or m!\n";
        system("PAUSE");

        return 0;
}
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

Код: Выделить всё

int matrix::size(int n,int m)
 {
        cout<<"input the n:";
        cin>>n;  
        cout<<"input the m:";
        cin>>m;
        return 0;
 }
Да вы батенька зажигаете. Тут вопрос в следующем что вы хотели получить?
здесь переменные n и m локальные для метода и перекрывают переменные класса. И не понятно зачем они объявлены как параметры метода. все равно вводятся через cin.
Евгений Александрович
Сообщения: 82
Зарегистрирован: 19 дек 2009, 16:48

Обдумав, согласился с тем, что это - ерунда.
Но как же тогда можно создать метод для ввода размерности, ведь n и m должны быть private???
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

А почему тогда не так

Код: Выделить всё

void matrix::setsize()
 {
        cout<<"input the n:";
        cin>>n;  
        cout<<"input the m:";
        cin>>m;
 }
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

BulldozerBSG писал(а):

Код: Выделить всё

int matrix::size(int n,int m)
 {
        cout<<"input the n:";
        cin>>n;  
        cout<<"input the m:";
        cin>>m;
        return 0;
 }
Да вы батенька зажигаете. Тут вопрос в следующем что вы хотели получить?
здесь переменные n и m локальные для метода и перекрывают переменные класса. И не понятно зачем они объявлены как параметры метода. все равно вводятся через cin.
Причем, сизифов труд. "Все, что нажито непосильным трудом..." n и m - даже НЕ VAR-параметры. Т.е. получали в них данные, получали... А как только ф-ия size заканчивает работу, все труды пропадают втуне.
GeorgeSoca
Сообщения: 95
Зарегистрирован: 12 окт 2015, 04:09
Откуда: Guam
Контактная информация:

Pa vart webbhotell kan ni kanna er trygg! Forutom att vi anvander oss av speglade harddiskar pa alla vara servrar sa tar vi aven backup tva ganger per dygn pa separata servrar. Vi anvander oss av ISPmanager som kontrollpanel. ISPmanager ar en kontrollpanel som gor det enkelt att administrera sin hemsida. Hos oss kan ni lagga hur manga hemsidor och domaner ni onskar under ett webbhotellskonto.
virtual hosting
Ответить