Advertisement
NeLeGaLoChKa

calculator

Jun 24th, 2024
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.15 KB | None | 0 0
  1. fun main() {
  2.     print("Введіть математичний вираз: ")
  3.     val expression: String = readLine()!!.toString()
  4.     val lastIndex = expression.lastIndex
  5.     val listNumeric: MutableList<Double> = mutableListOf()
  6.     val listString: MutableList<String> = mutableListOf()
  7.     var counter: Int = 1
  8.     var k: Int = 0
  9.     for (i in expression) {
  10.         if (i == '+' || i == '-' || i == '/' || i == '*' || i == '=') {
  11.             listNumeric.add(expression.dropLast(lastIndex - counter + 2).drop(k).toDouble())
  12.             listString.add(expression[counter - 1].toString())
  13.             k = counter
  14.         }
  15.         counter++
  16.     }
  17.     var result:Double = 0.0
  18.     counter = 0
  19.     listString.forEach {
  20.         if (it == "/") {
  21.             if (listNumeric.get(counter + 1) == 0.0) {
  22.                 println("На 0 ділити не можна!")
  23.                 return
  24.             }
  25.             result = 0.0
  26.             result += listNumeric.get(counter) / listNumeric.get(counter + 1)
  27.             listNumeric.removeAt(counter + 1)
  28.             listNumeric.removeAt(counter)
  29.             listNumeric.add(counter, result.toDouble())
  30.             counter--
  31.  
  32.         }
  33.         if (it == "*") {
  34.             result = 0.0
  35.             result += listNumeric.get(counter) * listNumeric.get(counter + 1)
  36.             listNumeric.removeAt(counter + 1)
  37.             listNumeric.removeAt(counter)
  38.             listNumeric.add(counter, result.toDouble())
  39.             counter--
  40.         }
  41.         counter++
  42.     }
  43.     counter = 0
  44.     for (i in listString.indices) {
  45.         if (counter >= listNumeric.size - 1) break
  46.         val operation = listString[i]
  47.         if (operation == "+") {
  48.             result = listNumeric[counter] + listNumeric[counter + 1]
  49.             listNumeric.removeAt(counter + 1)
  50.             listNumeric[counter] = result
  51.             counter--
  52.         } else if (operation == "-") {
  53.             result = listNumeric[counter] - listNumeric[counter + 1]
  54.             listNumeric.removeAt(counter + 1)
  55.             listNumeric[counter] = result
  56.             counter--
  57.         }else continue
  58.         counter++
  59.     }
  60.     println(result)
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement