fork download
  1. import java.io.*;
  2. import java.util.*;
  3.  
  4. public class PolynomialAddition {
  5. static File dataInpt;
  6. static Scanner inFile;
  7.  
  8. public static void main(String[] args) throws IOException {
  9. dataInpt = new File("/tmp/input.txt");
  10. inFile = new Scanner(dataInpt);
  11.  
  12. while (inFile.hasNextLine()) {
  13. Node first = readPolynomial();
  14. // printList(first);
  15.  
  16. Node second = readPolynomial();
  17. // printList(second);
  18.  
  19. Node addition = addPolynomials(first, second);
  20. // printList(addition);
  21.  
  22. printTabulated(first, second, addition);
  23.  
  24. System.out.println("\n");
  25. }
  26. }
  27.  
  28. private static Node addPolynomials(Node first, Node second) {
  29. Node head = null, current = null;
  30. while (null!=first || null!=second)
  31. {
  32. boolean haveBoth = (null!=first && null!=second);
  33.  
  34. Node node;
  35. if (haveBoth && first.exponent == second.exponent)
  36. {
  37. node = new Node(first.factor + second.factor, first.exponent, null);
  38. first = first.next;
  39. second = second.next;
  40. } else
  41. {
  42. boolean pickfirst = first!=null &&
  43. ((second == null) || first.exponent > second.exponent);
  44.  
  45. if (pickfirst)
  46. {
  47. node = new Node(first.factor, first.exponent, null);
  48. first = first.next;
  49. } else
  50. {
  51. node = new Node(second.factor, second.exponent, null);
  52. second = second.next;
  53. }
  54. }
  55.  
  56. if (current == null)
  57. {
  58. head = node;
  59. current = head;
  60. } else
  61. {
  62. current.next = node;
  63. current = node;
  64. }
  65. }
  66.  
  67. return head;
  68. }
  69.  
  70. private static void printTabulated(Node first, Node second, Node addition) {
  71. String line1="", line2="", barline="", line3="";
  72. while (addition != null)
  73. {
  74. part1 = " ",
  75. part2 = " ",
  76. part3 = " ";
  77.  
  78. if (null!=first && first.exponent == addition.exponent)
  79. {
  80. part1 = first.toString();
  81. first = first.next;
  82. }
  83. if (null!=second && second.exponent == addition.exponent)
  84. {
  85. part2 = second.toString();
  86. second = second.next;
  87. }
  88. part3 = addition.toString();
  89. addition = addition.next;
  90.  
  91. line1 += part1;
  92. line2 += part2;
  93. barline += "-----------";
  94. line3 += part3;
  95. }
  96.  
  97. System.out.println(line1);
  98. System.out.println(line2);
  99. System.out.println(barline);
  100. System.out.println(line3);
  101. }
  102.  
  103. private static Node readPolynomial() {
  104. String line = inFile.nextLine();
  105. StringTokenizer myTokens = new StringTokenizer(line);
  106.  
  107. Node head = null, previous = null;
  108. while (myTokens.hasMoreTokens()) {
  109. Node current = new Node();
  110. String term = myTokens.nextToken();
  111.  
  112. if (term.startsWith("+"))
  113. term = term.substring(1);
  114.  
  115. current.factor = Integer.parseInt(
  116. term.substring(0, term.indexOf("x")));
  117. current.exponent = Integer.parseInt(
  118. term.substring(term.indexOf("^") + 1));
  119.  
  120. if (previous == null)
  121. {
  122. head = current;
  123. previous = head;
  124. } else
  125. {
  126. previous.next = current;
  127. previous = current;
  128. }
  129. }
  130. return head;
  131. }
  132.  
  133. private static void printList(Node head) {
  134. for (Node ptr = head; ptr != null; ptr = ptr.next)
  135. System.out.print(ptr);
  136. System.out.println();
  137. }
  138. }
  139.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:4: class PolynomialAddition is public, should be declared in a file named PolynomialAddition.java
public class PolynomialAddition {
       ^
Main.java:28: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
	private static Node addPolynomials(Node first, Node second) {
	                                   ^
Main.java:28: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
	private static Node addPolynomials(Node first, Node second) {
	                                               ^
Main.java:28: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
	private static Node addPolynomials(Node first, Node second) {
	               ^
Main.java:70: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
	private static void printTabulated(Node first, Node second, Node addition) {
	                                   ^
Main.java:70: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
	private static void printTabulated(Node first, Node second, Node addition) {
	                                               ^
Main.java:70: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
	private static void printTabulated(Node first, Node second, Node addition) {
	                                                            ^
Main.java:104: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
	private static Node readPolynomial() {
	               ^
Main.java:134: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
	private static void printList(Node head) {
	                              ^
Main.java:13: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
			Node first = readPolynomial();
			^
Main.java:16: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
			Node second = readPolynomial();
			^
Main.java:19: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
			Node addition = addPolynomials(first, second);
			^
Main.java:29: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
		Node head = null, current = null;
		^
Main.java:34: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
			Node node;
			^
Main.java:37: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
				node = new Node(first.factor + second.factor, first.exponent, null);
				           ^
Main.java:47: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
				    node = new Node(first.factor, first.exponent, null);
				               ^
Main.java:51: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
					node = new Node(second.factor, second.exponent, null);
					           ^
Main.java:108: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
		Node head = null, previous = null;
		^
Main.java:110: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
			Node current = new Node();
			^
Main.java:110: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
			Node current = new Node();
			                   ^
Main.java:135: cannot find symbol
symbol  : class Node
location: class PolynomialAddition
		for (Node ptr = head; ptr != null; ptr = ptr.next)
		     ^
21 errors
stdout
Standard output is empty