Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
limelight
8 / 8 / 0
Регистрация: 17.04.2010
Сообщений: 112
#1

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

02.06.2010, 18:44. Просмотров 653. Ответов 0
Метки нет (Все метки)

Есть вот такой код:

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. но происходит логическая ошибка , т.е если ввести оочень большое число, программа работает неправильно. В чем здесь ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2010, 18:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выход за границы диапазона. Где ошибка? (C++):

Непонятная ошибка (выход за границы вектора) - C++
Имеется следующий код // header.h #include &lt;windows.h&gt; #include &lt;vector&gt; ...

Странная ошибка похожая на выход из диапазона у типа(long double) - C++
Добрый день! Тестирую на строке $1,234,567,890,123.99 В результате, на выходе из функции mstold получаю что-то очень похожее на...

Выход за границы массива - C++
Выхожу за пределы массива, но вот только не понимаю как. #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; const...

Проверить на выход за границы массива - C++
ПРивет, помогите пожалуйста, пишу класс - динамический массив, в перегрузке оператора нужно проверить на выход за границы, но не знаю как...

Выход за границы. как исправить??? - C++
Суто проги в том, чтобы из 2х массивов создать третий элементами которого я вляются совпавшие элементы первых 2х Например: 1 2 3 4 5 ...

Выход итератора за границы list - C++
почему у меня падает программа, когда пытаюсь ввести отсортированные элементы в другой list ??? list&lt;char&gt;ch; list&lt;char&gt;rev; ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2010, 18:44
Привет! Вот еще темы с ответами:

Почему происходит выход за границы? - C++
2 игрока берут из своих колод по 1-й карте. Т.е. достают элемент дека из начала дека. Так происходит, пока колода одного из игроков не...

Массивы: Проверка на выход за границы массива - C++
Здравствуйте! Пишу код хождения коня по шахматной доске. Конь пока стоит на одном месте и ходит по кругу. Как можно реализовать проверку на...

Исправить выход за границы двумерного динамического массива - C++
Уважаемые форумчане, помогите, проблема в том, что пишет ошибку после выполнения функции вывода массива, вот код //распечатка матрицы ...

Почему происходит выход за границы массива в функции Analyze()? - C++
#include &quot;Analyzer.h&quot; #include &quot;HashTable.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru