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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Матрица 
:(
    Опции темы
papam
Дата 20.3.2006, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Привет!!! Помогите найти ошибку.В консоли не выводится m3 и m4.Подскажите почему, пожалуста!!! Вот прога:
Код

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>



class cMatrix
{
    private:
        int m, n;    //Dimensions
        int **matrix;        //The matrix itself
    
    public:
        cMatrix(int raws, int colomns)
     

        {
            int i;

            m = raws;
            n = colomns;
            matrix = new int*[m];
            for(i = 0; i < m; i++)
                matrix[i] = new int[n];
          
        }
        
        ~cMatrix()
        
        {
            int i;
            
            for(i = 0; i < m; i++)
                delete matrix[i];
            
            delete matrix;
            matrix = NULL;
        }
    
        void InputMatrix()
        {
            for(int i = 0; i < m; i++)
                for(int j = 0; j < n; j++)
                {
                    cout<<"a["<<i<<","<<j<<"] = ";
                    cin>>matrix[i][j];
                    cout<<endl;
                };
        }

        void OutputMatrix()
        {
            for(int i = 0; i < m; i++)
            {
                for(int j = 0; j < n; j++)
                    printf("%3d", matrix[i][j]);
                cout<<endl;
            }
        }

        cMatrix operator + (cMatrix& matr)
        {
            if ((matr.m == m) && (matr.n == n))
            {
                cMatrix tmp(matr.m, matr.n);

                for(int i = 0; i < m; i++)
                    for(int j = 0; j < n; j++)
                        tmp.matrix[i][j] = matrix[i][j] + matr.matrix[i][j];
                return tmp;
            }
            else
                cout<<"The dimensions are different! Cannot add this objects!";
        }
        
      
        cMatrix operator * (cMatrix& matr)
        {
            if (matr.m == n)
            {
                cMatrix tmp(matr.m, matr.n);

                for(int i = 0; i < m; i++)
                    for(int j = 0; j < n; j++)
                        for(int k = 0; k < n; k++)
                            tmp.matrix[i][j] = matrix[i][k] + matr.matrix[k][j];
                return tmp;
            }
            else
                cout<<"The dimensions are not suitable! Cannot multiply this objects!";
        }
       cMatrix operator = (cMatrix& matr)
       {

 
                 
                for (int i=0; i<m; i++)
            {
                for (int j=0; j<n; j++)
                matrix[i][j]=matr.matrix[i][j];
                return *this;
    }

    
}

        
        

};



void main()
{
    cMatrix m1(2, 2), m2(2, 2), m3(2, 2), m4(2, 2);

    cout<<"Enter matrix m1: "<<endl;
    m1.InputMatrix();
    cout<<endl<<endl<<"Enter matrix m2: "<<endl;
    m2.InputMatrix();

    m3 = m1 + m2;
    m4 = m1 * m2;

    cout<<endl<<endl<<"m1 + m2: "<<endl;
    m3.OutputMatrix();
    cout<<endl<<endl<<"m1 * m2: "<<endl;
    m4.OutputMatrix();
};



--------------------
No Fucking Future
PM MAIL ICQ   Вверх
_hunter
Дата 20.3.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



а самому взять дебаггер и по коду пройтись не судьба?
если таки не судьба -- пинай автора кода.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Athlon
Дата 21.3.2006, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Во-первых, в деструкторе нужно удалять массивы:
Код

~cMatrix()    
        {    
            for(int i = 0; i < m; i++)    
                delete[] matrix[i];    
             
            delete[] matrix;    
            matrix = NULL;    
        }

во-вторых, научись переопределять оператор =
Код

cMatrix& operator = (const cMatrix& matr)    
{
     if(&matr != this)
     {
            m = matr.m;    
            n = matr.n;    
            matrix = new int*[m];    
            for(int i = 0; i < m; i++)    
                matrix[i] = new int[n];    

            for (int i=0; i<m; i++)    
            {    
                for (int j=0; j<n; j++)    
                matrix[i][j]=matr.matrix[i][j];    
                return *this;    
            }        
     }
     return *this;
}

PM MAIL ICQ   Вверх
papam
Дата 21.3.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Athlon огромное спасибо!!!
--------------------
No Fucking Future
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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