Как решить задачу на Котлине, является ли треугольник прямоугольным

Прямоугольный треугольник

(Время: 1 сек. Память: 16 Мб Сложность: 16%)

Заданы целочисленные координаты вершин треугольника на плоскости. Необходимо определить, является ли данный треугольник прямоугольным.

Требуется решить данную задачу с использованием теоремы Пифагора, вычислив квадраты длин сторон треугольника и проверив условие: a2+b2=c2. При этом следует описать структуру Point для хранения координат точки на плоскости, а также функцию Side(a,b), вычисляющую квадрат длины отрезка между парой точек.

Входные данные

Во входном файле INPUT.TXT записаны через пробел координаты вершин треугольника в формате x1 y1 x2 y2 x3 y3. Все числа целые, не превосходящие 1000 по абсолютной величине.

Выходные данные

В выходной файл OUTPUT.TXT выведите «Yes», если треугольник является прямоугольным и «No» в противном случае.

Примеры

|№|INPUT.TXT|OUTPUT.TXT|
|1| 0 3 0 0 5 0 |Yes|
|2| 0 0 1 5 2 0 |No|
заранее спасибо
Если котлине нету ответов то пожалуйста на Джава

В чем проблема? Что пробовали? Что получилось, что не получилось?

import java.util.*
import kotlin.math.sqrt

var AB = 0
var BC = 0
var CA = 0
fun main() {
    var Input = Scanner(System.`in`)
    var x1 = Input.nextInt()
    var y1 = Input.nextInt()
    var x2 = Input.nextInt()
    var y2 = Input.nextInt()
    var x3 = Input.nextInt()
    var y3 = Input.nextInt()

    vectorLength(x1, y1, x2, y2, x3, y3)

    println(AB)
    println(BC)
    println(CA)

}
fun vectorLength (x1: Int, y1: Int, x2: Int, y2: Int, x3: Int, y3: Int): Int {
    AB = sqrt(Math.pow((x2-x1).toDouble(), 2.0)+Math.pow((y2-y1).toDouble(), 2.0)).toInt()
    BC = sqrt(Math.pow((x3-x2).toDouble(), 2.0)+Math.pow((y3-y2).toDouble(), 2.0)).toInt()
    CA = sqrt(Math.pow((x1-x3).toDouble(), 2.0)+Math.pow((y1-y3).toDouble(), 2.0)).toInt()
    return AB
    return BC
    return CA
}

написал такую код но не даёт даже АВ ВС и СА треугольника

Так а тут же просят только да/нет.

Так нельзя. Надо возвращаемое значение функции взять, сами по себе переменные в другой функции не появятся.

И нельзя так сразу 3 числа вернуть.

Functions | Kotlin


При выкладывании кода на форумы надо нажимать кнопку Код.

Я сначала хотел найти АВ ВС и СА а потом с помощью if сделать.

Можете по советовать с алгоритмом

Я бы корни не извлекал. Если перефразировать Пифагора - треугольник прямоугольный если сумма квадратов каких-то двух сторон равна квадрату третьей

так тоже пробовал не получается

Так а что пробовали?

В коде выше же просто функция неправильно сделана, смотрите как работать с функциями по ссылке выше или в любом другом учебнике по Котлину.


сам писал после прочтения задания?

И с Side не нужно будет думать как вернуть три числа из функции )

Я, кстати, не заметил, что в коде выше это глобальные переменные (и ретурны не делают ничего полезного).
Тогда непонятно что значит

вроде бы всё выводится :thinking:
https://rextester.com/LLPGL4775

кроме YES|NO :clkollol:

Ну так автор же говорил, что хотел сначала стороны найти, соответственно попытался вывести их для проверки.

Спасибо всем у меня получилась

import java.util.*
var B: Boolean = false
fun main() {
    var Input = Scanner(System.`in`)
    var x1 = Input.nextInt()
    var y1 = Input.nextInt()
    var x2 = Input.nextInt()
    var y2 = Input.nextInt()
    var x3 = Input.nextInt()
    var y3 = Input.nextInt()

    vectorLength(x1, y1, x2, y2, x3, y3)
    if (B) {
        println("yes")
    }else {
        println("no")
    }
}
fun vectorLength (x1: Int, y1: Int, x2: Int, y2: Int, x3: Int, y3: Int): Boolean {
    var AB = Math.pow((x2-x1).toDouble(), 2.0)+Math.pow((y2-y1).toDouble(), 2.0)
    var BC = Math.pow((x3-x2).toDouble(), 2.0)+Math.pow((y3-y2).toDouble(), 2.0)
    var CA = Math.pow((x1-x3).toDouble(), 2.0)+Math.pow((y1-y3).toDouble(), 2.0)
    if (AB==BC+CA || BC==AB+CA || CA==AB+BC) {
        B = true
    }else {
        B = false
    }
    return B
}

Можно без B сразу return AB == BC + CA || ............., или B = AB == BC + CA || ............. без if.

Ну и как выше написано, надо либо ретурн и брать его значение после вызове функции, либо глобальные переменные (очевидно лучше первое), а не оба сразу. + в задании просили не такие функции.


При вставке кода не из одной строки надо переходить на пустую строку перед нажатием на кнопку Код ) Что логично, потому что зачем вставлять первую строку кода в конце строки текста.

1 лайк