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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перегрузка +, для матриц 
:(
    Опции темы
Maryann
Дата 20.1.2008, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



помогите найти ошибку: 
Код

class matrix
{
    int size; int A[20][20];
    public:
        matrix(){size=1;}
        matrix(int n){size=n;}
        //matrix(int n,int x){size=n; for(int i=0;i<size;i++)A[i][i]=x;}
        ~matrix(){cout<<"destrouctor\n";}
        void vvod();
        void vivod();
        matrix operator+(matrix o2);
};


.....
перегрузка  такая:
Код

matrix matrix::operator+(matrix o2)
{
    matrix temp(size);
        //temp.size=size;
        for (int i=0; i<size;i++)
            for(int j=0;j<size; j++)
            {temp.A[i][j]=A[i][j]+o2.A[i][j];}
    return temp;
}

PM MAIL   Вверх
JackYF
Дата 20.1.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(Maryann @  20.1.2008,  13:51 Найти цитируемый пост)
помогите найти ошибку: 

ошибка-то в чём? опять телепатов вызывать?




--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Maryann
Дата 20.1.2008, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

void main()
{
     matrix m1(2); m1.vvod();
     matrix m2(2); m2.vvod();
     matrix m3(2); m3=m1+m2;
     m3.vivod();
}


и он выдает такое сообщение: Unhandled Exception 
что неправильно не могу понять. Вроде должно работать?
PM MAIL   Вверх
Ulysses4j
Дата 20.1.2008, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 6.6.2007
Где: Ростов-на-Дону

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



Напишите текст main() по одному оператору в строчке и запустите — должно стать понятно, в какой момент вылетает. Скорей всего дело в вводе-выводе — пиведите код vvod, vivod.


--------------------
Communication is critical to the job of a programmer.
C. Jazdzewski. Fatherly Advice To New Programmers
PM MAIL WWW   Вверх
Maryann
Дата 20.1.2008, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

void matrix::vvod()
{
    cout<<"Enter chisla matrizi, "<<size*size<<" chisel\n";
    for(int i=0;i<size; i++)
        for(int j=0; j<size;j++)
        {cin>>A[i][j];}
}
void matrix::vivod()
{
    cout<<"matrix: \n";
    for(int i=0;i<size; i++)
        {for(int j=0; j<size;j++) cout<<A[i][j]<<", "; cout<<"\n";}
}


дело в том, что он не выделяет какую-либо ошибку, просто вылетает окно - General Protection Exception 
PM MAIL   Вверх
archimed7592
Дата 20.1.2008, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



Maryann, предоставленный Вами код выглядит нормально. А если убрать все строчки из main, то будет GPE?



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Maryann
Дата 20.1.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Если убрать все строчки из main() , никаких ошибок он не выдает
ошибка возникает, только после строчки m3=m1+m2

Это сообщение отредактировал(а) Maryann - 20.1.2008, 15:58
PM MAIL   Вверх
ama_kid
Дата 20.1.2008, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



Maryann, а не уничтожается ли объект temp до того, как его значение будет передано в объект m3?


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Ulysses4j
Дата 20.1.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 6.6.2007
Где: Ростов-на-Дону

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



Под MSVC 9.0 все прекрасно работает, исключений нет. Вы от нас ничего не скрываете? ;) Какой компилятор?

Добавлено через 3 минуты и 8 секунд
Цитата
Maryann, а не уничтожается ли объект temp до того, как его значение будет передано в объект m3?

С какой стати? Все чисто: все данные хранятся по значению (длина, массив int), вызывается по умолчанию сгенерённый копиктор, который их благополучно побайтово копирует.


--------------------
Communication is critical to the job of a programmer.
C. Jazdzewski. Fatherly Advice To New Programmers
PM MAIL WWW   Вверх
Maryann
Дата 20.1.2008, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ama_kid, возможно, и что же теперь делать? 
PM MAIL   Вверх
ama_kid
Дата 20.1.2008, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



Maryann, ну для начала упомянуть компилятор\среду разработки, потому как у меня на MSVC++ 2005 тоже все отлично проглатывается без GPE


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Maryann
Дата 20.1.2008, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ama_kid, Borland C++, version 4.5 copyright 1991, 1994

Добавлено через 13 минут и 43 секунды
Только что написала то же самое для векторов - заработало!!!  smile Странно, что не работает для матриц
PM MAIL   Вверх
archimed7592
Дата 20.1.2008, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



Цитата(Maryann @  20.1.2008,  16:57 Найти цитируемый пост)
ama_kid, возможно

Невозможно.

Цитата(Maryann @  20.1.2008,  16:57 Найти цитируемый пост)
и что же теперь делать?  

Сменить компилятор(если это позволяют обстоятельства). Советую MinGW или MSVC Express.

Это сообщение отредактировал(а) archimed7592 - 20.1.2008, 17:30


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Ulysses4j
Дата 20.1.2008, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 6.6.2007
Где: Ростов-на-Дону

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



Самое странное, что в Borland C++ 3.1 работает... А если вам предложить выбросить этот компилятор в топку и скачать нормальный, вы, конечно же, откажетесь?


--------------------
Communication is critical to the job of a programmer.
C. Jazdzewski. Fatherly Advice To New Programmers
PM MAIL WWW   Вверх
Mayk
Дата 20.1.2008, 17:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

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



Цитата(Ulysses4j @  20.1.2008,  21:30 Найти цитируемый пост)
Самое странное, что в Borland C++ 3.1 работает... 

не факт. более чем возможно что где-нибудь в не превиденном коде аффтора рушиться память.

Цитата(Maryann @  20.1.2008,  19:46 Найти цитируемый пост)

дело в том, что он не выделяет какую-либо ошибку, просто вылетает окно - General Protection Exception  

Отладчик мой друг
Отладчик мой друг
Отладчик мой друг
Отладчик мой друг
Отладчик мой друг
Отладчик мой друг
Отладчик мой друг
Отладчик мой друг
Отладчик мой друг
Отладчик мой друг
Отладчик мой друг
Отладчик мой друг
Отладчик мой друг



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW 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.0756 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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