Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.game;
- import com.sun.xml.internal.ws.commons.xmlutil.Converter;
- import java.util.ArrayList;
- import java.util.Scanner;
- //todo add classpath for java
- public class Main {
- public static void main(String[] args) {
- Scanner scnr = new Scanner(System.in);
- System.out.println("enter expr:");
- String s = "3286/40"; //scnr.nextLine();
- String[] arrayOfString = new String[2];
- arrayOfString = s.split("/");
- int countOfNum = 1; //количество цифр, взятое для сравнения в первом числе со вторым числом
- String substringOfFirstNum;
- int firstSubNum, secondNum;
- String arrayOfResultChars = "";
- ArrayList<ArrayList<String>> reshenie = new ArrayList<>();
- reshenie.add(new ArrayList<>()); //добавил первую строку
- reshenie.get(0).add(arrayOfString[0]);
- reshenie.get(0).add("|");
- reshenie.get(0).add(arrayOfString[1]);
- reshenie.add(new ArrayList<>()); //добавил вторую строку
- reshenie.get(1).add("-");
- String multiple = "";
- for(int i = 0; i < arrayOfString[0].length() - 1; i++){
- multiple += " ";
- }
- reshenie.get(1).add(multiple);
- multiple = "";
- for(int i = 0; i < arrayOfString[0].length() + 2; i++){
- multiple += "-";
- }
- reshenie.get(1).add(multiple);
- String prewRes = "";
- int countOfShift = 0, k = 4, countOfShift2 = 0;
- while(true){
- substringOfFirstNum = arrayOfString[0].substring(0, countOfNum);
- firstSubNum = Integer.valueOf(substringOfFirstNum); //первое подчисло
- secondNum = Integer.valueOf(arrayOfString[1]); //второе число
- if(firstSubNum < secondNum){
- if(countOfNum == arrayOfString[0].length()){ //если чисел больше нет
- if(arrayOfResultChars.indexOf(".") == -1){ //если точки ещё нет
- arrayOfResultChars += ".";
- }
- arrayOfString[0] += "0"; //добавляем к первому числу ноль
- countOfNum = 1;
- }else countOfNum++;
- }else{
- int result = firstSubNum / secondNum; // целая часть от результата деления
- arrayOfResultChars += result;
- String shiftRest = String.valueOf(result * secondNum);
- if(reshenie.size() < 3){ //если третья строка
- reshenie.add(new ArrayList<>()); //добавил третью строку
- reshenie.get(2).add(shiftRest);
- multiple = "";
- for(int i = 0; i < arrayOfString[0].length() - shiftRest.length(); i++){
- multiple += " ";
- }
- reshenie.get(2).add(multiple); // добавили пробелов
- reshenie.get(2).add("|");
- reshenie.add(new ArrayList<>()); //добавил четвёртую строку
- multiple = "";
- for(int i = 0; i < shiftRest.length(); i++){
- multiple += "-";
- }
- reshenie.get(3).add(multiple);
- }else{ //универсальный шифт
- reshenie.add(new ArrayList<>()); //добавили шифт строку
- countOfShift += Math.abs(prewRes.length() - shiftRest.length());
- countOfShift2 += Math.abs(arrayOfString[0].length() - shiftRest.length());
- prewRes = shiftRest;
- multiple = "";
- for(int i = 0; i < countOfShift; i++){
- multiple += " ";
- }
- reshenie.get(k).add(multiple); // пробелы перед шифтом
- reshenie.get(k).add(arrayOfString[0]); //шифт
- reshenie.add(new ArrayList<>()); //минус
- k++;
- reshenie.get(k).add("-");
- reshenie.add(new ArrayList<>()); //остаток от шифта
- k++;
- multiple = "";
- for(int i = 0; i < countOfShift + countOfShift2; i++){
- multiple += " ";
- }
- reshenie.get(k).add(multiple); //пробелы перед остатоком от шифта
- reshenie.get(k).add(shiftRest);
- countOfShift++;
- reshenie.add(new ArrayList<>()); //остаток от шифта
- k++;
- multiple = "";
- for(int i = 0; i < countOfShift + countOfShift2 + shiftRest.length(); i++){
- multiple += "-";
- }
- reshenie.get(k).add(multiple);
- k++;
- }
- int balance = firstSubNum - result * secondNum; //остаток
- if(balance == 0) {
- break;
- }
- arrayOfString[0] = balance + arrayOfString[0].substring(countOfNum);
- countOfNum = 1;
- }
- }
- reshenie.get(2).add(arrayOfResultChars);
- for(int i = 0; i < reshenie.size(); i++){
- for(int j = 0; j < reshenie.get(i).size(); j++) {
- System.out.print(reshenie.get(i).get(j));
- }
- System.out.println();
- }
- /* System.out.println("enter a:");
- double a = scnr.nextInt();
- System.out.println("enter b:");
- double b = scnr.nextInt();
- System.out.println("result of div a/b:" + (a/b));
- */
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement