JavaRush /Java блог /Random /Кофе-брейк #170. Пишем Java-программу для проверки прямоу...

Кофе-брейк #170. Пишем Java-программу для проверки прямоугольного треугольника. Создаем свой собственный алгоритм сортировки

Статья из группы Random

Java-программа для проверки прямоугольного треугольника

Источник: Mayankvikash В этой статье продемонстрирована разработка Java-программы для проверки треугольника на наличие в нем прямого угла. Прямоугольный треугольник — это треугольник, у которого один из внутренних углов равен 90 градусов. Есть несколько свойств прямоугольного треугольника; одно из них состоит в том, что квадрат гипотенузы равен сумме квадрата катетов (перпендикуляра и основания треугольника). Это называется теоремой Пифагора. Гипотенуза — самая длинная сторона треугольника. Кофе-брейк #170. Пишем Java-программу для проверки прямоугольного треугольника. Создаем свой собственный алгоритм сортировки - 1

Логика программы

Поскольку квадрат гипотенузы равен сумме квадратов двух других сторон, нам нужно вычислить эту сумму. И если она равна квадрату гипотенузы, то треугольник прямоугольный. Скриншот программы: Кофе-брейк #170. Пишем Java-программу для проверки прямоугольного треугольника. Создаем свой собственный алгоритм сортировки - 2А теперь давайте напишем программу. Вот ее базовая структура:

import java.util*;
public class RightAngledTriangle{
  public static void main(String args[]){
    Scanner in = new Scanner(System.in);
    // code
  }
}
Объявление переменных:

int h, p, b;
Запрос пользователя на ввод:

System.out.println("Enter the Hypotenuse");
h = in.nextInt();
System.out.println("Enter the Perpendicular");
p = in.nextInt();
System.out.println("Enter the Base");
b = in.nextInt();
Простой способ проверить, равен ли квадрат гипотенузы сумме квадратов перпендикуляра и основания, — использовать if-else. Условие If-else:

if (h*h==(p*p)+(b*b)){
    System.out.println("Right Angled Triangle");
}
else{
    System.out.println("Not a right angled Traingle");
}

Код


import java.util.*;
public class RightAngledTriangle {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int h, p, b;
        System.out.println("Enter the Hypotenuse");
        h = in.nextInt();
        System.out.println("Enter the Perpendicular");
        p = in.nextInt();
        System.out.println("Enter the Base");
        b = in.nextInt();

        if (h*h==(p*p)+(b*b)){
            System.out.println("Right Angled Triangle");
        }
        else{
            System.out.println("Not a right angled Traingle");
        }

    }
}

Вывод

Не прямоугольный треугольник: Кофе-брейк #170. Пишем Java-программу для проверки прямоугольного треугольника. Создаем свой собственный алгоритм сортировки - 3Прямоугольный треугольник: Кофе-брейк #170. Пишем Java-программу для проверки прямоугольного треугольника. Создаем свой собственный алгоритм сортировки - 4

Создаем свой собственный алгоритм сортировки

Источник: Medium Благодаря этому руководству вы научитесь выполнять сортировку не только в порядке возрастания или убывания, но и на основе собственных параметров. Кофе-брейк #170. Пишем Java-программу для проверки прямоугольного треугольника. Создаем свой собственный алгоритм сортировки - 5Обычно на Java или любом другом языке программирования мы сортируем по возрастанию или убыванию. Но можем ли мы сортировать на основе собственного параметра? Чтобы выяснить это, давайте сначала отсортируем привычным способом — в порядке возрастания или убывания.

//Например, у нас есть массив
Integer array[]={9,4,8,5,7,6,1,2,3};

//Сортируем по возрастанию
Arrays.sort(array);

//печатаем отсортированный массив
System.out.println(Arrays.toString(array));

//Сортируем по убыванию
Arrays.sort(array, Collections.reverseOrder());

//печатаем отсортированный массив
System.out.println(Arrays.toString(array));
Выход:
[1,2,3,4,5,6,7,8,9] [9,8,7,6,5,4,3,2,1]
Arrays.sort(array) — это метод коллекций в Java для сортировки массива. Если он используется без второго параметра, то сортировка происходит в порядке возрастания. Во втором параметре мы можем определить Collections.reverseOrder() для сортировки в порядке убывания. Но нам нужно создать собственный алгоритм сортировки во втором параметре. Как это сделать? Предположим, нам нужно упорядочить числа в массиве таким образом, чтобы при их объединении мы получили число, которое является наибольшим из всех чисел, с условием, что может быть изменена только позиция чисел, а не цифры в этом числе. Например: {1,2,3,4}=>{4321} {12,34}=>{3412} {30,3}=>{330} {8,89}=>{898} В Java есть класс Comparator, в котором мы должны перегрузить функцию сравнения. Ее принцип работы состоит в том, что если два элемента появляются в порядке {item1, item2}, то они будут приняты функцией сравнения (comparator) вот так:

public int compare(item 1, item2){

}
Если функция выводит положительное значение, то функция сортировки поменяет местами элементы. То есть, вывод в коллекции будет {item2,item1}. Если функция выводит отрицательный или нулевой результат, то порядок не изменится, вывод останется прежним: {item1,item2}. Эта логика рекурсивно применима ко всем членам массива. Итак, переходя к исходному вопросу, мы определим нашу логику в классе компаратора, перегрузив функцию compare() следующим образом:

Collections.sort(A,new Comparator<Integer>(){

public int compare(Integer a,Integer b){
String a1=Integer.toString(a)+Integer.toString(b);
String a2=Integer.toString(b)+Integer.toString(a);
int l =a1.length();
for(int i=0;i<l;i++){

if(a1.charAt(i)>a2.charAt(i)){
return -1;
}

else if(a1.charAt(i)<a2.charAt(i)){
return 1;

}

else continue;

}

return 0;

}
Здесь мы объединили два числа и проверили, какое из них больше. Эта логика рекурсивно применяется ко всем остальным числам в массиве, если нужно получить желаемый результат. Подводя итоги, используйте класс Comparator для перегрузки функции compare(). Это поможет создать собственную логику сортировки и вернуть положительное значение при изменении порядка появления в массиве, и отрицательное значение или 0 при сохранении порядка.
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ