-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathless_than.cpp
78 lines (73 loc) · 2.61 KB
/
less_than.cpp
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
/**
* Boost Software License - Version 1.0 - August 17th, 2003
* Permission is hereby granted, free of charge, to any person
* or organization obtaining a copy of the software and
* accompanying documentation covered by this license
* (the "Software") to use, reproduce, display, distribute,
* execute, and transmit the Software, and to prepare derivative
* works of the Software, and to permit third-parties to whom the
* Software is furnished to do so, all subject to the following:
*
* The copyright notices in the Software and this entire statement,
* including the above license grant, this restriction and the following
* disclaimer, must be included in all copies of the Software, in whole or
* in part, and all derivative works of the Software, unless such copies
* or derivative works are solely in the form of machine-executable
* object code generated by a source language processor.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
* NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE
* DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY,
* WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
#include <istream>
#include <ostream>
#include "../bigint.hpp"
namespace libbig
{
bool largeInt:: operator < (const largeInt& z) {
// sign = 1: positive number
// sign = 0: negative number
// flip if its reverse
bool NEGATIVE = 0;
bool POSITIVE = 1;
if (this->sign == NEGATIVE) {
if (z.sign == POSITIVE){
return true;
} else if (z.sign == NEGATIVE){
if (this->number.length() > z.number.length()){
return true;
}
if (this->number.length() < z.number.length()){
return false;
}
for(int i = 0; i < this->number.length(); i++) {
if (this->number[i] < z.number[i]) {
return false;
}
}
}
} else if (this->sign == POSITIVE) {
if (z.sign == NEGATIVE){
return false;
} else if (z.sign == POSITIVE){
if (this->number.length() < z.number.length()){
return true;
}
if (this->number.length() > z.number.length()){
return false;
}
for(int i = 0; i < this->number.length(); i++) {
if (this->number[i] > z.number[i]) {
return false;
}
}
}
}
return false;
}
} // namespace libbig