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

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

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

Правильно ли я реализовываю класс длинной арифметики? - C++

19.06.2014, 16:39. Просмотров 139. Ответов 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
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
class LongLong
{
private:
char * longNumber;
int _size;
public:
LongLong(const char *number = NULL);
LongLong(unsigned int);
 
friend LongLong operator +(const LongLong &, const LongLong &);
 
~LongLong()
{
delete[] longNumber;
}
 
char *strrev(char *s) const;
 
void show()
{
for (int i = 0; i < _size; ++i)
cout << longNumber;
}
};
 
 
void reverse(char s[])
{
int i, j;
char c;
 
for (i = 0, j = strlen(s) - 1; i<j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
 
void Convert(unsigned int number, char *s)
{
 
int i = 0;
do { 
s[i++] = number % 10; 
} while ((number /= 10) > 0);
 
s[i] = '\0';
reverse(s);
}
 
LongLong::LongLong(const char *number)
{
int size = strlen(number) + 1;
_size = size;
longNumber = new char[size];
memcpy(longNumber, number, size);
}
 
LongLong::LongLong(unsigned int number)
{
int count = 0;
unsigned int a = number;
do
{
++count;
} while (a % 10 != 0);
_size = count;
longNumber = new char[count];
Convert(number, longNumber);
}
 
LongLong operator+ (const LongLong &first, const LongLong &second)
{
 
int j, d1, d2, digitsum, carry = 0,
maxlen = (first._size > second._size) ? first._size : second._size;
char *temp = new char[maxlen + 2]; assert(temp != NULL);
 
for ( j = 0; j<maxlen; j++)
{
d1 = (j > first._size - 1) ? 0 : first.longNumber[j] - '0';
d2 = (j > second._size - 1) ? 0 : second.longNumber[j] - '0';
digitsum = d1 + d2 + carry;
if (digitsum >= 10)
{
digitsum -= 10;
carry = 1;
}
else
carry = 0;
temp[j] = digitsum + '0';
}
 
if (carry)
temp[j++] = '1';
 
temp[j] = '\0';
second.strrev(temp);
LongLong result(temp);
delete[] temp;
 
return result;
}
 
char * LongLong::strrev(char *s) const
{
int len = strlen(s), len1 = len - 1, index,
limit = len >> 1;
char t;
 
for (int i = 0; i<limit; i++)
{
index = len1 - i;
t = s[index];
s[index] = s[i];
s[i] = t;
}
return s;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2014, 16:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Правильно ли я реализовываю класс длинной арифметики? (C++):

Класс длинной арифметики - C++
Дайте класс длинной арифметики - хотелось бы разобраться в этой штуке, а то какие исходники не найду - то не рабочие, то еще что-то( ...

Реализация длинной целочисленной арифметики - C++
Добрый день! Возникла такая проблема: была поставлена задача реализовать детерминированный тест Миллера на простоту. С этим более-менее...

Объясните код длинной арифметики - C++
Не могу понять синтаксиса этого кода void add(vlong *op1, vlong *op2, vlong *res) { vlong *mxop, *mnop; int i, flag=0, st; mxop =...

Ошибка в реализации длинной арифметики - C++
Здравствуйте. Я скопировал с e-maxx'а и объединил всё в одну программу: #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;cstdio&gt; ...

Ищу примеры реализации длинной арифметики - C++
Здравствуйте! Скиньте пожалуйста примеры решения задач на тему &quot;Длинная арифметика&quot;! Желательно с подробным пояснением! Язык C++. Очень...

Вычислить значение суммы. Задача с использованием "длинной арифметики". - C++
Тема: «Задачи на длинную арифметику» Задача: Вычислить точное значение суммы 1^2 + 2^2 + 3^2 + ... + n^2 (n ≥ 20000). Пожалуйста,...

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

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

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

Как правильно написать счетчик для нахождения самой длинной строки? - C++
Ввести массив строк и найти в нем максимальную по длине строку. Не учитывать случай, когда таких строк несколько. #include &quot;stdafx.h&quot; ...

Ошибка в выводе данных, класс выводит правильно, а класс в классе - нет - C++
Неизвестная для меня проблема. Класс выводит данные правильно из Consigment, а вот третий экземпляр класса, работает не верно, если...


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

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

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