Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.96 KB | None | 0 0
  1. package com.game;
  2.  
  3. import com.sun.xml.internal.ws.commons.xmlutil.Converter;
  4.  
  5. import java.util.ArrayList;
  6. import java.util.Scanner;
  7.  
  8. //todo add classpath for java
  9. public class Main {
  10.  
  11. public static void main(String[] args) {
  12. Scanner scnr = new Scanner(System.in);
  13. System.out.println("enter expr:");
  14. String s = "3286/40"; //scnr.nextLine();
  15. String[] arrayOfString = new String[2];
  16. arrayOfString = s.split("/");
  17. int countOfNum = 1; //количество цифр, взятое для сравнения в первом числе со вторым числом
  18. String substringOfFirstNum;
  19. int firstSubNum, secondNum;
  20. String arrayOfResultChars = "";
  21. ArrayList<ArrayList<String>> reshenie = new ArrayList<>();
  22. reshenie.add(new ArrayList<>()); //добавил первую строку
  23. reshenie.get(0).add(arrayOfString[0]);
  24. reshenie.get(0).add("|");
  25. reshenie.get(0).add(arrayOfString[1]);
  26. reshenie.add(new ArrayList<>()); //добавил вторую строку
  27. reshenie.get(1).add("-");
  28. String multiple = "";
  29. for(int i = 0; i < arrayOfString[0].length() - 1; i++){
  30. multiple += " ";
  31. }
  32. reshenie.get(1).add(multiple);
  33. multiple = "";
  34. for(int i = 0; i < arrayOfString[0].length() + 2; i++){
  35. multiple += "-";
  36. }
  37. reshenie.get(1).add(multiple);
  38. String prewRes = "";
  39. int countOfShift = 0, k = 4, countOfShift2 = 0;
  40. while(true){
  41. substringOfFirstNum = arrayOfString[0].substring(0, countOfNum);
  42. firstSubNum = Integer.valueOf(substringOfFirstNum); //первое подчисло
  43. secondNum = Integer.valueOf(arrayOfString[1]); //второе число
  44. if(firstSubNum < secondNum){
  45. if(countOfNum == arrayOfString[0].length()){ //если чисел больше нет
  46. if(arrayOfResultChars.indexOf(".") == -1){ //если точки ещё нет
  47. arrayOfResultChars += ".";
  48. }
  49. arrayOfString[0] += "0"; //добавляем к первому числу ноль
  50. countOfNum = 1;
  51. }else countOfNum++;
  52. }else{
  53. int result = firstSubNum / secondNum; // целая часть от результата деления
  54. arrayOfResultChars += result;
  55. String shiftRest = String.valueOf(result * secondNum);
  56. if(reshenie.size() < 3){ //если третья строка
  57. reshenie.add(new ArrayList<>()); //добавил третью строку
  58. reshenie.get(2).add(shiftRest);
  59. multiple = "";
  60. for(int i = 0; i < arrayOfString[0].length() - shiftRest.length(); i++){
  61. multiple += " ";
  62. }
  63. reshenie.get(2).add(multiple); // добавили пробелов
  64. reshenie.get(2).add("|");
  65. reshenie.add(new ArrayList<>()); //добавил четвёртую строку
  66. multiple = "";
  67. for(int i = 0; i < shiftRest.length(); i++){
  68. multiple += "-";
  69. }
  70. reshenie.get(3).add(multiple);
  71. }else{ //универсальный шифт
  72. reshenie.add(new ArrayList<>()); //добавили шифт строку
  73. countOfShift += Math.abs(prewRes.length() - shiftRest.length());
  74. countOfShift2 += Math.abs(arrayOfString[0].length() - shiftRest.length());
  75. prewRes = shiftRest;
  76. multiple = "";
  77. for(int i = 0; i < countOfShift; i++){
  78. multiple += " ";
  79. }
  80. reshenie.get(k).add(multiple); // пробелы перед шифтом
  81. reshenie.get(k).add(arrayOfString[0]); //шифт
  82. reshenie.add(new ArrayList<>()); //минус
  83. k++;
  84. reshenie.get(k).add("-");
  85. reshenie.add(new ArrayList<>()); //остаток от шифта
  86. k++;
  87. multiple = "";
  88. for(int i = 0; i < countOfShift + countOfShift2; i++){
  89. multiple += " ";
  90. }
  91. reshenie.get(k).add(multiple); //пробелы перед остатоком от шифта
  92. reshenie.get(k).add(shiftRest);
  93. countOfShift++;
  94. reshenie.add(new ArrayList<>()); //остаток от шифта
  95. k++;
  96. multiple = "";
  97. for(int i = 0; i < countOfShift + countOfShift2 + shiftRest.length(); i++){
  98. multiple += "-";
  99. }
  100. reshenie.get(k).add(multiple);
  101. k++;
  102. }
  103. int balance = firstSubNum - result * secondNum; //остаток
  104. if(balance == 0) {
  105. break;
  106. }
  107. arrayOfString[0] = balance + arrayOfString[0].substring(countOfNum);
  108. countOfNum = 1;
  109. }
  110. }
  111. reshenie.get(2).add(arrayOfResultChars);
  112. for(int i = 0; i < reshenie.size(); i++){
  113. for(int j = 0; j < reshenie.get(i).size(); j++) {
  114. System.out.print(reshenie.get(i).get(j));
  115. }
  116. System.out.println();
  117. }
  118.  
  119. /* System.out.println("enter a:");
  120. double a = scnr.nextInt();
  121. System.out.println("enter b:");
  122. double b = scnr.nextInt();
  123. System.out.println("result of div a/b:" + (a/b));
  124. */
  125.  
  126. }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement