Форум программистов, компьютерный форум CyberForum.ru

Выход за границы диапазона. Где ошибка? - C++

Восстановить пароль Регистрация
 
limelight
7 / 7 / 0
Регистрация: 17.04.2010
Сообщений: 112
02.06.2010, 18:44     Выход за границы диапазона. Где ошибка? #1
Есть вот такой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
#include <limits>
using namespace std;
 
//////////////////////////////////
class my_Int
{
   private:
      int pole;
   public:
 
       my_Int() :pole(0) {}         //конструкторы
       my_Int(int p): pole(p) {}
      
      void GetValue()
         {
            int my_data;
            cout<<"Vvedite znachenie polja: ";
            cin>>my_data;
            pole = my_data;
         }
 
      void ShowTo() const
      {
          cout<<"Znachenie polja: "<<pole<<endl;
      }      
 
      my_Int operator+ (my_Int m);
      my_Int operator- (my_Int m);
      my_Int operator* (my_Int m);
      my_Int operator/ (my_Int m);
      
};
 
 
int main()
{
   
   my_Int my_Int1, my_Int2, my_Int3;//объявляем три объекта
   my_Int2.GetValue();//ручная инициализация поля объекта
   my_Int3 = my_Int1 + my_Int2;//складываем значения
   my_Int3.ShowTo();  //отображение 
 
   ;
 
   cin.ignore().get();
   return 0;
}
 
 
my_Int my_Int::operator +(my_Int m)
 {            
    pole = pole + m.pole;
    if( pole<numeric_limits<int>::max() && pole>numeric_limits<int>::min() )
        return my_Int(pole);
    else 
    {
        cout<<"Vi vveli nedopustimoe chislo!"<<endl;
        exit(1);
    }
 } 
 
my_Int my_Int::operator -(my_Int m)
 {            
    pole = pole - m.pole;
    return my_Int(pole);
 }
 
my_Int my_Int::operator *(my_Int m)
 {            
    pole = pole * m.pole;
    return my_Int(pole);
 }
 
my_Int my_Int::operator /(my_Int m)
 {            
    pole = pole / m.pole;
    return my_Int(pole);
 }
Здесь я перегружаю 4 операции. а потом пытаюсь проверить результат на границы допустимых значений для типа int. но происходит логическая ошибка , т.е если ввести оочень большое число, программа работает неправильно. В чем здесь ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2010, 18:44     Выход за границы диапазона. Где ошибка?
Посмотрите здесь:

Выход за границы. как исправить??? C++
C++ Проверить на выход за границы массива
Выход за границы массива C++
C++ Не получается исправить ошибку (Вводится диапазон, где 1-ое число-начало диапазона, 2-ое число приращени, 3-е число конец диапазона)
C++ При правильном вводе пароля вводятся два числа M и N, определяющие границы диапазона
C++ Обработка исключений - выход за пределы диапазона int
C++ При вызове функции необработанное исключение, выход за границы массива
Почему происходит выход за границы? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 03:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru