summaryrefslogtreecommitdiff
path: root/projects/project2_LInfiniteInteger/InfiniteInteger y was constructed using the following statement
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2017-02-06 11:41:36 -0500
committerAlexander Pickering <alexandermpickering@gmail.com>2017-02-06 11:41:36 -0500
commit89cdf3efb49335e7c07a68a5a64657eeec2288a6 (patch)
treecdc0fd8165e65b1637fa54cac11c932acefc8a89 /projects/project2_LInfiniteInteger/InfiniteInteger y was constructed using the following statement
downloadcoe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.tar.gz
coe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.tar.bz2
coe0445-89cdf3efb49335e7c07a68a5a64657eeec2288a6.zip
Inital commitHEADmaster
Diffstat (limited to 'projects/project2_LInfiniteInteger/InfiniteInteger y was constructed using the following statement')
-rw-r--r--projects/project2_LInfiniteInteger/InfiniteInteger y was constructed using the following statement76
1 files changed, 76 insertions, 0 deletions
diff --git a/projects/project2_LInfiniteInteger/InfiniteInteger y was constructed using the following statement b/projects/project2_LInfiniteInteger/InfiniteInteger y was constructed using the following statement
new file mode 100644
index 0000000..658ce14
--- /dev/null
+++ b/projects/project2_LInfiniteInteger/InfiniteInteger y was constructed using the following statement
@@ -0,0 +1,76 @@
+ LInfiniteInteger thattemp = new LInfiniteInteger(anInfiniteInteger.toString());
+ thattemp.isNegative = false;
+ thistemp.isNegative = false;
+ if(thattemp.compareTo(thistemp) > 0)
+ {
+ negateAtEnd = true;
+ }
+ System.out.println("[ME] Attempting to detect if final answer should be negitive: " + negateAtEnd + " : " + thattemp.compareTo(thistemp) + " : When compareing " + thattemp.toString() + " with " + thistemp.toString());
+ //find the 9's complement of the this number
+ LInfiniteInteger ninesc = new LInfiniteInteger("");
+ Node thisnode = thistemp.lastNode;
+ Node thatnode = thattemp.lastNode;
+ while(thisnode != null || thatnode != null)
+ {
+ if(thatnode != null)
+ {
+ ninesc.addfirst(9-thatnode.data);
+ thatnode = thatnode.previous;
+ }
+ else
+ {
+ ninesc.addfirst(9);
+ }
+ if(thisnode != null)
+ {
+ thisnode = thisnode.previous;
+ }
+
+ }
+ ninesc.removeLast();
+ System.out.println("[ME] Calculated 9's complement: " + ninesc);
+ LInfiniteInteger answer =(LInfiniteInteger) ninesc.plus(thistemp);
+ answer = (LInfiniteInteger) answer.plus(new LInfiniteInteger(1));
+ //Remove carry
+ System.out.println("[ME] Answer's number of digits: " + answer.getNumberOfDigits() + " Ninesc's number of digits: " + ninesc.getNumberOfDigits());
+ if(answer.getNumberOfDigits() > ninesc.getNumberOfDigits())
+ {
+ answer.removeFirst();
+ }
+ System.out.println("[ME] 9's complement + other + 1 number = " + answer.toString());
+
+ ninesc = new LInfiniteInteger("");
+ for(Node tmp = answer.lastNode; tmp != null; tmp = tmp.previous)
+ {
+ ninesc.addfirst(9-tmp.data);
+ }
+ ninesc.removeLast();
+ System.out.println("[ME] After reverseing again, number = " + ninesc.toString());
+ answer = (LInfiniteInteger) ninesc.plus(new LInfiniteInteger(1));
+ //Remove leading 0's if nessessary
+ System.out.println("[ME] Answer's number of digits: " + answer.getNumberOfDigits() + "(" + answer.toString() +") Ninesc's number of digits: " + ninesc.getNumberOfDigits() + "(" + ninesc.toString() + ")");
+ if(answer.getNumberOfDigits() > ninesc.getNumberOfDigits())
+ {
+ answer.removeFirst();
+ }
+ for(Node tmp = answer.firstNode; tmp != null; tmp = tmp.next)
+ {
+ if(tmp.data == 0)
+ {
+ System.out.println("[ME] Removeing a leading 0");
+ answer.removeFirst();
+ }
+ else
+ {
+ break;
+ }
+ }
+ System.out.println("[ME] After removeing padded 0's number is " + answer.toString());
+ if(answer.firstNode == null)
+ {
+ answer.addfirst(0);
+ }
+ //If the final answer has no numbers, add a 0
+ answer.isNegative = negateAtEnd;
+ System.out.println("[ME] Reversed back, final answer is " + answer.toString());
+ return answer; \ No newline at end of file