Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fun main() {
- print("Введіть математичний вираз: ")
- val expression: String = readLine()!!.toString()
- val lastIndex = expression.lastIndex
- val listNumeric: MutableList<Double> = mutableListOf()
- val listString: MutableList<String> = mutableListOf()
- var counter: Int = 1
- var k: Int = 0
- for (i in expression) {
- if (i == '+' || i == '-' || i == '/' || i == '*' || i == '=') {
- listNumeric.add(expression.dropLast(lastIndex - counter + 2).drop(k).toDouble())
- listString.add(expression[counter - 1].toString())
- k = counter
- }
- counter++
- }
- var result:Double = 0.0
- counter = 0
- listString.forEach {
- if (it == "/") {
- if (listNumeric.get(counter + 1) == 0.0) {
- println("На 0 ділити не можна!")
- return
- }
- result = 0.0
- result += listNumeric.get(counter) / listNumeric.get(counter + 1)
- listNumeric.removeAt(counter + 1)
- listNumeric.removeAt(counter)
- listNumeric.add(counter, result.toDouble())
- counter--
- }
- if (it == "*") {
- result = 0.0
- result += listNumeric.get(counter) * listNumeric.get(counter + 1)
- listNumeric.removeAt(counter + 1)
- listNumeric.removeAt(counter)
- listNumeric.add(counter, result.toDouble())
- counter--
- }
- counter++
- }
- counter = 0
- for (i in listString.indices) {
- if (counter >= listNumeric.size - 1) break
- val operation = listString[i]
- if (operation == "+") {
- result = listNumeric[counter] + listNumeric[counter + 1]
- listNumeric.removeAt(counter + 1)
- listNumeric[counter] = result
- counter--
- } else if (operation == "-") {
- result = listNumeric[counter] - listNumeric[counter + 1]
- listNumeric.removeAt(counter + 1)
- listNumeric[counter] = result
- counter--
- }else continue
- counter++
- }
- println(result)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement