Программа для рассчета значения Y

Всем привет! Столкнулся с такой проблемой, что нужно посчитать значение Y, но довольно замудренным способом. Суть заключается в том, что у нас есть количество шагов, которое если больше 100, то рассчитывается по формуле x2-x1/шаг, а если меньше то x2-x1. Шаг рассчитывается как x2-x1/100.

В цикле рассчет значения Y нужно реализовать так, чтобы начальным значением было x1, конечным - x2. А также нужно указать шаг, с которым нужно проходить одну итерацию, при этом шаг должен быть таков, чтобы суммарное количество итераций не превышало 100.

Вот полное описание задания:

  1. Запросите у пользователя начальное и конечное значение переменной х, а также задайте значение случайно используя коэффициент а (от 1 до 10). Обязательно добавьте подсказку при вводе данных.
  2. Если начальное значение х больше конечного – поменяйте их местами.
  3. Количество шагов определить, как разность между конечным x и начальным: если эта разница больше 100, и установите шаг больше 1, для того чтобы количество шагов не было больше 100 (по формуле ниже), иначе шаг равен 1. Формула для расчета шага (если разница больше 100):

Шаг = (х_конечный – х_начальный) / 100.

К примеру, если х_начальный = 0, а х_конечный = 200, то шаг= 2, а количество шагов = 100. 4. Для расчета "у" используйте таблицу ниже в соответствии с вашим вариантом. Выведите все значения "х" и соответствующие им значения "у". Используйте форматированный вывод (3 знака после запятой).

import kotlin.math.cos
import kotlin.math.pow
import kotlin.math.sqrt

fun main(args: Array<String>) {

    println("Enter start X value: ")
    var x1 = readln().toInt()

    println("Enter end X value: ")
    var x2 = readln().toInt()

    val a = (1..10).random()
    println("A value: $a")

    if (x1 > x2) {
        x2 = x1.also {x1 = x2}
    }

    var stepValue = x2.toDouble() - x1.toDouble()

    if (stepValue.toInt() > 100) {
        stepValue = (x2.toDouble() - x1.toDouble()) / 100
    }

    println("Step size: $stepValue")

    var stepFor = x2.toDouble() - x1.toDouble()

    if (stepFor.toInt() > 100) {
        stepFor = (x2.toDouble() - x1.toDouble()) / stepValue
    }

    println("Steps: " + stepFor.toInt())

    for (currentX in x1..x2) {
        println("Current X value: $currentX")
        val y: Double = 1.0e5 * (currentX / 3.0).pow(2.0 / 7.0) + 9.0 / (3.0 * currentX / a) + sqrt(cos(currentX.toDouble()))
        println("у = " + String.format("%.3f", y));
    }
}

Ответы (0 шт):