I need to modify my program to run the demo. I have all the methods but the divi
ID: 3557796 • Letter: I
Question
I need to modify my program to run the demo. I have all the methods but the division and the modulus.
Here is the demo:
public class BigIntDemoAddSubtractMultiplyDivideModulus
{
public static void main(String[] args)
{
BigInt b1;
BigInt b2;
BigInt b3;
b1 = new BigInt("-0");
b2 = new BigInt("+0");
b3 = b1.add(b2);
System.out.println("1) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b1 = new BigInt("1");
b2 = new BigInt("1");
b3 = b1.add(b2);
System.out.println(" 2) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("-1");
b2 = new BigInt("1");
b3 = b1.add(b2);
System.out.println(" 3) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("1");
b2 = new BigInt("-1");
b3 = b1.add(b2);
System.out.println(" 4) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("-1");
b2 = new BigInt("-1");
b3 = b1.add(b2);
System.out.println(" 5) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("+1");
b2 = new BigInt("+1");
b3 = b1.add(b2);
System.out.println(" 6) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("-100");
b2 = new BigInt("100");
b3 = b1.add(b2);
System.out.println(" 7) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("100");
b2 = new BigInt("-100");
b3 = b1.add(b2);
System.out.println(" 8) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("-100");
b2 = new BigInt("-100");
b3 = b1.add(b2);
System.out.println(" 9) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("100");
b2 = new BigInt("100");
b3 = b1.add(b2);
System.out.println(" 10) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("200");
b2 = new BigInt("-0");
b3 = b1.add(b2);
System.out.println(" 11) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
//b3 = b1.divideBy(b2);
//System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
//b3 = b1.modulus(b2);
//System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("-200");
b2 = new BigInt("-0");
b3 = b1.add(b2);
System.out.println(" 12) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
//b3 = b1.divideBy(b2);
//System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
//b3 = b1.modulus(b2);
//System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("-0");
b2 = new BigInt("200");
b3 = b1.add(b2);
System.out.println(" 13) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("-0");
b2 = new BigInt("-200");
b3 = b1.add(b2);
System.out.println(" 14) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("37");
b2 = new BigInt("26");
b3 = b1.add(b2);
System.out.println(" 15) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("-37");
b2 = new BigInt("26");
b3 = b1.add(b2);
System.out.println(" 16) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("37");
b2 = new BigInt("-26");
b3 = b1.add(b2);
System.out.println(" 17) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("-37");
b2 = new BigInt("-26");
b3 = b1.add(b2);
System.out.println(" 18) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("-200111111111111111199999999");
b2 = new BigInt("3333333333333388888888888888888888555555555555555555555555");
System.out.println(" b1 is " + b1);
System.out.println("b2 is " + b2);
b3 = b1.add(b2);
System.out.println("19) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("66666666666666666666677777777777777777777711111111111111111200");
b2 = new BigInt("-3333333333333333333344444444444");
System.out.println(" b1 is " + b1);
System.out.println("b2 is " + b2);
b3 = b1.add(b2);
System.out.println("20) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("-66666666666666666666677777777777777777777711111111111111111200");
b2 = new BigInt("-333333");
System.out.println(" b1 is " + b1);
System.out.println("b2 is " + b2);
b3 = b1.add(b2);
System.out.println("21) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("6666666");
b2 = new BigInt("3333333333333333333344444444444444444444455555555555555550");
System.out.println(" b1 is " + b1);
System.out.println("b2 is " + b2);
b3 = b1.add(b2);
System.out.println("22) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("1111111111111111111111111111111122222222222222222222222222222222222333333333333333333333333333333334444444444444444444444444");
b2 = new BigInt("99999999999999999999999999999888888888888888888888888888888881111111111111111111111111111111122222222222222222222222222222222222333333333333333333333333333333334444444444444444444444444");
System.out.println(" b1 is " + b1);
System.out.println("b2 is " + b2);
b3 = b1.add(b2);
System.out.println("23) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("-1111111111111111111111111111111122222222222222222222222222222222222333333333333333333333333333333334444444444444444444444444");
b2 = new BigInt("99999999999999999999999999999888888888888888888888888888888881111111111111111111111111111111122222222222222222222222222222222222333333333333333333333333333333334444444444444444444444444");
System.out.println(" b1 is " + b1);
System.out.println("b2 is " + b2);
b3 = b1.add(b2);
System.out.println("24) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("1111111111111111111111111111111122222222222222222222222222222222222333333333333333333333333333333334444444444444444444444444");
b2 = new BigInt("-99999999999999999999999999999888888888888888888888888888888881111111111111111111111111111111122222222222222222222222222222222222333333333333333333333333333333334444444444444444444444444");
System.out.println(" b1 is " + b1);
System.out.println("b2 is " + b2);
b3 = b1.add(b2);
System.out.println("25) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
b1 = new BigInt("-1111111111111111111111111111111122222222222222222222222222222222222333333333333333333333333333333334444444444444444444444444");
b2 = new BigInt("-99999999999999999999999999999888888888888888888888888888888881111111111111111111111111111111122222222222222222222222222222222222333333333333333333333333333333334444444444444444444444444");
System.out.println(" b1 is " + b1);
System.out.println("b2 is " + b2);
b3 = b1.add(b2);
System.out.println("26) sum b3 is " + b1 +" + " + b2 + " = " + b3);
b3 = b1.subtract(b2);
System.out.println("differance b3 is " + b1 +" - " + b2 + " = " + b3);
b3 = b1.multiply(b2);
System.out.println("product b3 is " + b1 +" * " + b2 + " = " + b3);
b3 = b1.divideBy(b2);
System.out.println("quotient b3 is " + b1 +" / " + b2 + " = " + b3);
b3 = b1.modulus(b2);
System.out.println("modulus b3 is " + b1 +" mod " + b2 + " = " + b3);
}
}
Here is the program:
import java.util.Scanner;
public class BigInt {
private boolean is_neg; // negative
private int[] array;
public BigInt(String b1) {
String value = b1;
is_neg = false;
if (b1.charAt(0) == '+' || b1.charAt(0) == '-') {
if (b1.length() > 1) {
value = b1.substring(1);
} else {
System.out.println("this contains only sign: " + b1);
return;
}
if (b1.charAt(0) == '-')
is_neg = true;
}
array = new int[value.length()];
for (int i = 0; i < value.length(); i++) {
if (Character.isDigit(value.charAt(i))) {
array[array.length - 1 - i] = Character.digit(value.charAt(i), 10);
} else {
System.out.println("this contains non numeric values: " + b1);
return;
}
}
}
public String toString()
{
StringBuilder st = new StringBuilder();
if (is_neg)
st.append('-');
else
st.append('+');
for(int i=0; i<array.length; i++)
{
st.append(array[array.length - 1 - i]);
}
return st.toString();
}
private int[] removeLeadingZero(int[] a)
{
int i = a.length - 1;
while (i > 0 && a[i] == 0)
i--;
int[] c = new int[i+1];
for (int j = 0; j < c.length; j++)
c[j] = a[j];
return c;
}
// return 0 if same, <0 if a<b, > 0 if a > b
private int compareArr(int[] a, int[] b)
{
if (a.length != b.length)
return a.length - b.length;
for (int i = a.length - 1; i >= 0; i--)
{
if (a[i] != b[i])
return a[i] - b[i];
}
return 0;
}
private int[] addArr(int[] a, int[] b)
{
int size = Math.max(a.length, b.length) + 1;
int[] c = new int[size];
int carry = 0;
for (int i = 0; i < a.length || i < b.length || carry > 0; i++)
{
int sum = carry;
if (i < a.length)
sum += a[i];
if (i < b.length)
sum += b[i];
carry = sum / 10;
sum = sum % 10;
c[i] = sum;
}
return removeLeadingZero(c);
}
// assume a >= b
private int[] subArr(int[] a, int[] b)
{
int[] c = new int[a.length];
int carry = 0;
for (int i = 0; i < a.length || i < b.length || carry != 0; i++)
{
int r = carry;
if (i < a.length)
r += a[i];
if (i < b.length)
r -= b[i];
carry = (r < 0 ? -1 : 0);
if (r < 0)
r += 10;
c[i] = r;
}
return removeLeadingZero(c);
}
public BigInt add(BigInt b)
{
BigInt r = new BigInt("0");
if (is_neg && b.is_neg)
{
r.is_neg = true;
r.array = addArr(array, b.array);
}
else if (!is_neg && !b.is_neg)
{
r.is_neg = false;
r.array = addArr(array, b.array);
}
else if (!is_neg) // positive + negative
{
if (compareArr(array, b.array) >= 0)
{
r.is_neg = false;
r.array = subArr(array, b.array);
}
else
{
r.is_neg = true;
r.array = subArr(b.array, array);
}
}
else // negative + positive
{
if (compareArr(array, b.array) <= 0)
{
r.is_neg = false;
r.array = subArr(b.array, array);
}
else
{
r.is_neg = true;
r.array = subArr(array, b.array);
}
}
return r;
}
public BigInt subtract(BigInt b)
{
BigInt r = new BigInt("0");
if (!is_neg && b.is_neg) // positive - negative
{
r.is_neg = false;
r.array = addArr(array, b.array);
}
else if (is_neg && !b.is_neg) // negative - positive
{
r.is_neg = true;
r.array = addArr(array, b.array);
}
else if (!is_neg && !b.is_neg) // positive - positive
{
if (compareArr(array, b.array) >= 0)
{
r.is_neg = false;
r.array = subArr(array, b.array);
}
else
{
r.is_neg = true;
r.array = subArr(b.array, array);
}
}
else // negative - negative
{
if (compareArr(array, b.array) <= 0)
{
r.is_neg = false;
r.array = subArr(b.array, array);
}
else
{
r.is_neg = true;
r.array = subArr(array, b.array);
}
}
return r;
}
public BigInt multiple(BigInt b)
{
BigInt r = new BigInt("+0");
int p = 1;
for (int i = 0; i < array.length; i++)
{
int times = array[i] * p;
for (int j = 0; j < times; j++)
r = r.add(b);
p *= 10;
}
if (is_neg)
r.is_neg = !r.is_neg;
return r;
}
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Enter a number : ");
BigInt ba = new BigInt(in.next());
System.out.print("Enter another number : ");
BigInt bb = new BigInt(in.next());
System.out.println(ba.toString() + " + " + bb.toString() + " = " +
ba.add(bb).toString());
System.out.println(ba.toString() + " - " + bb.toString() + " = " +
ba.subtract(bb).toString());
System.out.println(ba.toString() + " * " + bb.toString() + " = " +
ba.multiple(bb).toString());
}
}
Explanation / Answer
God knows best