diff options
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 statement | 76 |
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 |
