Skip to content

Commit 0662a27

Browse files
committed
1-6 tasks is ready
1 parent ba1d72a commit 0662a27

3 files changed

Lines changed: 86 additions & 32 deletions

File tree

HugeInt.cpp

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ HugeInt::HugeInt(int d) {
1717
negative = false;
1818
}
1919

20-
HugeInt::HugeInt(int num[41], int dep) {
21-
for (int i = 0; i < 41; i++) {
20+
HugeInt::HugeInt(int num[40], int dep) {
21+
for (int i = 0; i < 40; i++) {
2222
number[i] = num[i];
2323
}
2424
depth = dep;
@@ -43,7 +43,13 @@ void HugeInt::set(string str) {
4343
}
4444
}
4545

46-
string HugeInt::get() {
46+
void HugeInt::set(int num[40]) {
47+
for (int i = 0; i < 40; i++) {
48+
number[i] = num[i];
49+
}
50+
}
51+
52+
string HugeInt::get() const {
4753
string str;
4854
if (negative) {
4955
str += '-';
@@ -58,14 +64,40 @@ string HugeInt::get() {
5864
return str;
5965
}
6066

61-
bool HugeInt::check_zero() {
67+
bool HugeInt::check_zero() const {
6268
for (int i = 0; i < depth; i++) {
6369
if (number[i]) return false;
6470
}
6571
return true;
6672
}
6773

68-
int HugeInt::compare(HugeInt &b) {
74+
void HugeInt::set_minus(bool state) {
75+
negative = state;
76+
}
77+
78+
bool HugeInt::has_minus() const {
79+
return negative;
80+
}
81+
82+
int HugeInt::get_depth() const {
83+
return depth;
84+
}
85+
86+
void HugeInt::set_depth(int dep) {
87+
depth = dep;
88+
}
89+
90+
void HugeInt::set_digit(int index, int digit) {
91+
number[index] = digit;
92+
}
93+
94+
int HugeInt::get_digit(int index) const {
95+
return number[index];
96+
}
97+
98+
99+
100+
int HugeInt::compare(HugeInt &b) const {
69101
if (negative && !b.negative) {
70102
return -1;
71103
} else if (!negative && b.negative) {
@@ -216,4 +248,12 @@ HugeInt HugeInt::dif(HugeInt &b) {
216248
} else if (!negative && b.negative) {
217249
return this->simple_sum(b);
218250
}
251+
}
252+
253+
// операторы
254+
255+
HugeInt HugeInt::operator-() const {
256+
HugeInt temp(*this);
257+
temp.negative = !temp.negative;
258+
return temp;
219259
}

HugeInt.h

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,33 @@ class HugeInt {
99
int number[40];
1010
int depth;
1111
bool negative;
12-
12+
1313
public:
14-
HugeInt();
14+
HugeInt(); // конструктор по умолчанию
1515
HugeInt(int depth);
1616
HugeInt(int numbers[40], int depth);
17-
18-
void set(std::string str);
19-
std::string get();
20-
21-
bool check_zero();
22-
int compare(HugeInt &b);
17+
18+
void set(std::string str); // set для массива цифр
19+
void set(int numbers[40]); // set для массива цифр
20+
std::string get() const; // get для массива цифр
21+
22+
void set_minus(bool state); // set для знака
23+
bool has_minus() const; // get для знака
24+
void set_depth(int dep); // set для длины числа
25+
int get_depth() const; // get для длины числа
26+
27+
void set_digit(int index, int digit); // set для разряда числа
28+
int get_digit(int index) const; // get для разряда числа
29+
30+
bool check_zero() const;
31+
int compare(HugeInt &b) const;
2332
HugeInt simple_sum(HugeInt &b);
2433
HugeInt simple_dif(HugeInt &b);
2534
HugeInt sum(HugeInt &b);
2635
HugeInt dif(HugeInt &b);
36+
37+
// операторы
38+
HugeInt operator-() const;
2739
};
2840

2941
#endif

L12_6.cpp

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
1-
/*
2-
Создайте класс HugeInt, который хранит в 40-элементном массиве цифр целые числа разрядностью до 40 знаков.
3-
Разрядность указать в конструкторе. Предусмотреть функции сложения, вычитания, сравнения и проверки на 0.
4-
5-
1) НЕ ДОП:
6-
расставить const
7-
сет и гет для всех полей
8-
узнавать знак числа
9-
менять знак числа
10-
узнавать позицию на разряде
11-
менять позицию на разряде
12-
урезать размер числа, чтобы не было 0
13-
14-
2) ДОП:
15-
перегрузка операторов
16-
умножение
17-
нахождение остатка от деления
18-
*/
1+
//? Задание:
2+
// Создайте класс HugeInt, который хранит в 40-элементном массиве цифр целые числа разрядностью до 40 знаков.
3+
// Разрядность указать в конструкторе. Предусмотреть функции сложения, вычитания, сравнения и проверки на 0.
4+
5+
/// TODO ///
6+
//? НЕ ДОП:
7+
//* расставить const
8+
//* сет и гет для всех полей
9+
//* узнавать знак числа
10+
//* менять знак числа
11+
//* узнавать позицию на разряде
12+
//* менять позицию на разряде
13+
// урезать размер числа, чтобы не было нулей
14+
//? ДОП:
15+
// перегрузка операторов
16+
// умножение
17+
// нахождение остатка от деления
1918

2019
#include "HugeInt.h"
2120
using namespace std;
@@ -50,9 +49,12 @@ int main() {
5049

5150
s = a.dif(b);
5251
cout << "Difference = " << s.get() << endl;
53-
52+
5453
s = a.sum(b);
5554
cout << "Summ = " << s.get() << endl;
5655

56+
s = -s;
57+
cout << s.get();
58+
5759
return 0;
5860
}

0 commit comments

Comments
 (0)