// The StackApps class that implements two Stack applications // Your name here import java.util.Scanner; public class StackApps { // convert a decimal number into a binary number and save it in a stack // Do not create any arrays! Do not use any Java libraries to do the convertion. // Doing so will result in points deduction. public String decToBin(int numDec) { CharStack stackBinary = new CharStack(64); // stack used to store the result binary number while (numDec > 0) { if (numDec % 2 == 0) stackBinary.push('0'); else stackBinary.push('1'); numDec /= 2; } return stackBinary.toString(); // return a string representation of the stack } // compute the sum of the two big intergers and save the result in a stack // Do not create any arrays! Do not use any Java libraries to do the calculation. // Doing so will result in points deduction. public String addBigIntegers(String num1, String num2) { CharStack stackNum1 = new CharStack(64); // stack used to store number 1 CharStack stackNum2 = new CharStack(64); // stack used to store number 2 CharStack stackResult = new CharStack(64); // stack used to store the result of the addition CharStack remaining; for (int i = 0; i < num1.length(); i += 1) stackNum1.push(num1.charAt(i)); for (int i = 0; i < num2.length(); i += 1) stackNum2.push(num2.charAt(i)); int carry = 0; int a; int b; int result; while (!(stackNum1.isEmpty() || stackNum2.isEmpty())) { a = (int) (stackNum1.pop() - '0'); b = (int) (stackNum2.pop() - '0'); result = (a+b+carry); carry = result/10; stackResult.push((char)((result%10) + '0')); } if (stackNum1.isEmpty()) remaining = stackNum2; else remaining = stackNum1; while (!(remaining.isEmpty())) { a = (int) (remaining.pop() - '0'); result = (a+carry); carry = result/10; stackResult.push((char)((result%10) + '0')); } if (carry > 0) stackResult.push((char)(carry + '0')); return stackResult.toString(); // return a string representation of the stack } }