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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Рекурсия и определитель http://www.cyberforum.ru/cpp-beginners/thread139830.html
Начал разбирать рекурсию, тяжко разобраться не могу, может кто нибудь объяснить рекурсию на примере вычисления определителя, надеюсь откликнитесь, реально нуждаюсь в помощи(((
C++ Работа с файлами Здраствуйте, помогите пожалуйста, решить задачки мне они очень нужны на завтра, я ещё не очень понимаю, как их решать, помогите пожалуйста. Задача 7. Дана строка S, целое число N (> 0) и файл-архив целых чисел, содержащий данные из нескольких файлов в формате: размер (число элементов) первого исходного файла и все элементы этого файла, размер второго исходного файла и все его элементы, …,... http://www.cyberforum.ru/cpp-beginners/thread139826.html
C++ Найти во введённом тексте самое длинное симметричное слово
1. Дана строка. Удвоить каждую встречающуюся «о» и «а». 2. В заданном тексте удалить из текста пробелы и подсчитать длину сформированного текста. 3. Найти во введённом тексте самое длинное симметричное слово, т.е. слово, которое слева направо и справа налево читается одинаково. Считать, что слова в тексте отделены друг от друга одним пробелом. 4. Задано предложение,...
C++ массив структур, не могу дописать... макс и мин одновременно...
массив структур. Дана информация о пяти рабочих цеха. Структура имеет вид: фамилия, размер зарплаты, стаж работы. Вывести данные о рабочем с наибольшей зарплатой и наименьшим стажем. я сделал вывод на экран работника с максимальной зарплатой.... но ни как не могу дагнать как сделать что бы он сартиравал ещё и по минимальному стажу.... подскажите пожалуйсто.... вот листинг... #include...
C++ Вывести слово в кавычках http://www.cyberforum.ru/cpp-beginners/thread139787.html
Столкнулась с совершенно простой проблемой, но не знаю как её решить! У меня есть слово вот допустим char a="abcd"; мне нужно вывести это слово в кавычках! прошу помощи...
C++ Ошибка в коде консольной программы "Морской бой" (VC++). Здравствуйте.Тема изъезженная,но всё же.Вобщем, имеется код достаточно простенького морского боя. #include <conio.h> #include <stdio.h> #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; подробнее

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

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. но происходит логическая ошибка , т.е если ввести оочень большое число, программа работает неправильно. В чем здесь ошибка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru