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

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

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

класс LongLong - C++

16.09.2012, 16:53. Просмотров 661. Ответов 1
Метки нет (Все метки)

Оригинал
Створити клас LongLong для роботи з цілими числами з 64 біт. Число повинно бути представлене двома полями: long – старша частина, unsigned long – молодша частина. Повинні бути реалізовані арифметичні операції, які присутні в C++ (без присвоювання), та порівняння. Как сделать умножения? кое что я уже сделал:

Создать класс LongLong для работы с целыми числами 64 бит. Число должно быть представлено двумя полями: long - старшая часть, unsigned long - младшая часть. Должны быть реализованы арифметические операции, которые присутствуют в C++ (без присваивания), и сравнения. Как сделать умножение? кое что я уже сделал:

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma argsused
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#define LONG_MAX 0xffffffffffffffff
#define MSI 0xffff
#define MI 0xffffffff
#define nBit 8
//---------------------------------------------------------------------------
class LongLong
{
    private:
        long s;
        unsigned long m;
        LongLong Create(unsigned char,unsigned char);
    public:
        void Init(signed char,unsigned char);
        int ToInt();
        void Show();
        LongLong operator + (LongLong);
        template <class t> LongLong operator + (t);
        LongLong operator - (LongLong);
        template <class t> LongLong operator - (t);
        LongLong operator * (LongLong);
        template <class t> LongLong operator * (t);
};
//---------------------------------------------------------------------------
void LongLong::Show()
{
    printf("(%d;%d) = %d\n",s,m,ToInt());
}
//---------------------------------------------------------------------------
int LongLong::ToInt()
{
    return ((s<<nBit)+m);
}
//---------------------------------------------------------------------------
void LongLong::Init(long _s,unsigned long _m)
{
    s=_s;
    m=_m;
    if(s<0)
    {
        m=-m;
        s--;
    }
}
//---------------------------------------------------------------------------
LongLong LongLong::operator + (LongLong _L)
{
    LongLong L;
    L.s=s+_L.s;
    L.m=m+_L.m;
    if( L.m<=m || L.m<=_L.m )
    {
        L.s++;
    }
    return L;
}
//---------------------------------------------------------------------------
template <class t> LongLong LongLong::operator + (t p)
{
    LongLong L;
    L.s=s;
    L.m=m+p;
    if( L.m<m || L.m<p )
    {
        L.s++;
    }
    return L;
}
//---------------------------------------------------------------------------
LongLong LongLong::operator - (LongLong _L)
{
    LongLong L;
    L.s=s-_L.s;
    L.m=m-_L.m;
    if( m<L.m )
    {
        L.s--;
    }
    return L;
}
//---------------------------------------------------------------------------
template <class t> LongLong LongLong::operator - (t p)
{
    LongLong L;
    L.s=s;
    L.m=m-p;
    if( m<L.m )
    {
        L.s--;
    }
    return L;
}
//---------------------------------------------------------------------------
LongLong LongLong::Create(unsigned long a,unsigned long b)
{
    LongLong L;
    L.m=a*b;
   /* if ( a * b >= (1<<8) )
    {
        us toRet = (a*b) / (1<<8);
        c = a*b - toRet * (1<<8);
        return toRet;
    }
    else
    {
        c = a * b;
        return 0;
    }*/
}
//---------------------------------------------------------------------------
LongLong LongLong::operator * (LongLong _L)
{
 
}
//---------------------------------------------------------------------------
template <class t> LongLong operator * (t p)
{
 
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
    return 0;
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2012, 16:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос класс LongLong (C++):

Создать класс LongLong для работы с целыми числами из 64 бит - C++ - C++
Добрый вечер,вот задание: Создать класс LongLong для работы с целыми числами из 64 бит. Число должно быть представлено двумя полями: long —...

15. Создать класс LongLong для работы с целыми числами. Число должно быть представлено двумя полями.Реализовать арифметические операции - C++
Добрый вечер,вот задание: Создать класс LongLong для работы с целыми числами из 64 бит. Число должно быть представлено двумя полями: long...

Классы, Длинная арифметика, LongLong - C++
Добрый день, Задание изначально было такое: Реализовать класс Money , используя для представления рублей класс LongLong. ...

Массив из 15 элементов типа longlong - C++
Кому не составит труда, создайте, пожалуйста, массив из 15 элементов типа longlong, каждый из которых равен факториалу своего индекса (т.е....

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { friend class diagonal; ...

Класс таблиц баз данных и класс записей в таблице(реляционная таблица). Предусмотреть класс связей между таблицами - C++
Здравствуйте! Никак не могу продумать структуру этой программы. Проходим наследование, но я все равно не знаю, как его здесь применить. Как...

1
KeyGen
384 / 291 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
16.09.2012, 17:22 #2
Вот может пригодиться. Пишу класс big_int. Класс не дописал. Застрял в делении...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2012, 17:22
Привет! Вот еще темы с ответами:

Отдельно класс данных, класс формул и главный класс - C++
Здравствуйте! У меня есть три вопроса. Первый вопрос. Скажите пожалуйста! Правильный ли это подход к созданию приложений :...

Реализовать класс родительский класс "Пара чисел" и класс-наследник "Комплексное число" - C++
Ткма работы создать класс pair (пара чисел); определить метод перемножения полей и операцию сложения пар (a,b)+(c,d) =(a+b,c+d)...

Класс, производный класс, паблик-класс - C++
Задание: Создать класс колесо, которое имеет радиус. Определить конструкторы и метод доступа. Создать класс машин, содержащий класс колесо....

Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки машин ”: марка - C++
Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки...


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

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

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