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

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

Войти
Регистрация
Восстановить пароль
 
karakul
0 / 0 / 0
Регистрация: 15.12.2012
Сообщений: 5
#1

перегрузка операций - C++

15.03.2013, 15:08. Просмотров 510. Ответов 4
Метки нет (Все метки)

Напишите программу, в которой используется класс Int, имитирующий стандартный класс Int. Перегрузите четыре целочисленных арифметических операции /, +, -, *. Так чтобы их можно было использовать для операций с объектами класса Int. Если результат выходит за границы типа int (в 32 разрядной системе) имеющие значение от -2 147 483 648 до 2 147 483 648, то операция должна послать сообщение об ошибках.

Операции я перегрузил.. а вот с частью "Если результат выходит за границы типа int (в 32 разрядной системе) имеющие значение от -2 147 483 648 до 2 147 483 648, то операция должна послать сообщение об ошибках." траблы..

буду очень благодарен за помощь..

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <conio.h>
#include <iostream>
#include <windows.h>
using namespace std;
 
class Int
{ 
    int x;
public:
    Int (int X=0)
    {
        x=X;
    } 
    void show()
    {
        cout<<x;
    }
    Int &operator+ (Int &a)
    {
 
        Int plus(0);
        plus.x=x+a.x;
        return plus;
    }
    Int &operator/ (Int &a)
    {
        Int del(0);
        if (a.x==0)
            cout<<"Delit' na nol' nel'zya\n";
        else
            del.x=x/a.x;
        return del;
    }
    Int &operator- (Int &a)
    {
        Int minus(0);
        minus.x=x-a.x;
        return minus;
    }
    Int &operator* (Int &a)
    {
        Int umnoj(0);
        umnoj.x=x*a.x;
        return umnoj;
    }
};
 
void main()
{
    Int a,b,c;
    int i,z,y;
    do
    {
        cout<<"\nVybirite deystvie:\n1-zadat' znachenie peremennoy\n2-pereyti k vyboru operacii\n0-vyhod\n";
        cin>>i;
        switch(i)
        {
        case 1:
            cout<<"Vvedite zcheniya peremennyh:\n";
            cout<<"a=";
            cin>>z;
            a = Int(z);
            cout<<"\nb=";
            cin>>y;
            b = Int(y);
            break;
        case 2:
            cout<<"\nVybirite operaciu:\n1-umnojenie\n2-delenie\n3-vychitanie\n4-slojenie\n";
            cin>>i;
            switch(i)
            {
            case 1:
                c=a*b;
                c.show();
                break;
            case 2:
                c=a/b;
                c.show();
                break;
            case 3:
                c=a-b;
                c.show();
                break;
            case 4:
                c=a+b;
                c.show();
                break;
            }
            break;
        }
    }
    while(i);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2013, 15:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос перегрузка операций (C++):

Перегрузка операций - C++
Здравствуйте, помогите реализовать программу: Класс - множество set. Дополнительно перегрузить следующие операции: + - добавить элемент в...

Перегрузка операций - C++
Доброго времени суток. Очень нужна помощь программистов. Есть такое задание: Создать класс, который запоминает римские числа в виде...

Перегрузка операций - C++
Начал изучать перегрузку операций, и чего-то вроде не понял или что... Вообщем не могу понять чего не компилит. Проект и ошибка в...

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

Перегрузка операций '<<' и '>>' - C++
Добрый вечер всем:) У меня вот такое задание: Создайте класс, реализующий однонаправленную очередь. В интерфейс класса должны входить...

Перегрузка операций - C++
Разработайте программу на языке С++, используя пользовательский тип данных – классы и перегрузку операций. Создайте класс Fraction...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
srg_btl
34 / 34 / 2
Регистрация: 21.02.2013
Сообщений: 90
15.03.2013, 15:30 #2
Можешь сравнивать полученый результат с входными данными.
Напр.: инт у нас 1 байт ( -128 до 127 ) и есть 2 числа 100 и 30, если ты их добавишь то получиться -126, тут сразу видно что ты вышел за границы
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
15.03.2013, 15:47 #3
http://msdn.microsoft.com/en-us/library/ms972705.aspx
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
15.03.2013, 17:59 #4
Цитата Сообщение от karakul Посмотреть сообщение
C++
1
2
3
4
5
6
Int &operator+ (Int &a) 
{ 
Int plus(0); 
plus.x=x+a.x; 
return plus; 
}
наверное все таки так
C++
1
2
3
4
5
Int &operator+ (Int &a) 
{ 
x=x+a.x; 
return *this; 
}
Добавлено через 4 минуты
насчет переполнения попробуй что то вроде
C++
1
2
3
4
5
6
7
res = a+b;
if(a>=0&&b>=0)
   if(res<a&&res<b)
      cout<<"overflow";
if(a<0&&b<0)
  if(res>a&&res>b)
     cout<<"overflow"
для других операций доработай знаки и условия
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
22.03.2013, 13:44 #5
прошу прощения косяк сложение вот так должно выглядеть
C++
1
2
3
4
5
6
Int operator+ (Int &a) //без & (для арифм операций возвращается по значению)
{ 
Int plus(0); 
plus.x=x+a.x; 
return plus; 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2013, 13:44
Привет! Вот еще темы с ответами:

перегрузка операций С++ - C++
Доброй ночи. Товарищи помогите пожалуйста, нужно срочно сдать лабораторную, а я никак не освою новый материал, негде даже нормальных...

Перегрузка операций - C++
#include &lt;iostream&gt; using namespace std; class chislo { public: chislo(); chislo(int a,int b); chislo(const chislo&amp;); ...

Перегрузка операций - C++
C++ Перегрузка операций.. Помоги написать прогу Определить класс для работы с квадратной матрицей. Получить величину к одним из...

Перегрузка операций << и >> - C++
Всем добрый день.. У меня такая проблема, не получается перегрузить операторы &lt;&lt; и &gt;&gt; для своего класса, делаю вот так: class CMPLX ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.03.2013, 13:44
Ответ Создать тему
Опции темы

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