Треугольник

  • 3
  • Недоступна
Напишем программу, которая будет просчитывать возможность существования треугольника на основе длин его сторон. Для этого тебе нужно: 1. Ввести с клавиатуры три числа – длины сторон предполагаемого треугольника. 2. Определить возможность существования треугольника по сторонам. Результат вывести на э
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (151)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Palych
Уровень 3
Expert
вчера, 14:34
По сравнение с предыдущей задачей, условие описано шикарно. Все понятно, что надо сделать. Решение, также, не сложное. Поэтому с первой попытки!
Scanner s = new Scanner (System.in);
    int a = s.nextInt();
    int b = s.nextInt();
    int c = s.nextInt();

    if (a < b + c) && (b < a + c) && (c < a + b) {
        System.out.println(TRIANGLE_EXISTS);
    }
    else if (a >= b + c) || (b >= a + c) || (c >= a + b) {
        System.out.println(TRIANGLE_NOT_EXISTS);
    }
Roman
Уровень 6
Expert
17 мая, 13:44
Почему программа не засчитывает последнее условие? Все же правильно выполнено, или я чего-то не замечаю?
RedFoxSex
Уровень 4
13 мая, 18:07
Код покажи. Откуда мы знаем чего ты там написал? Обрати внимание, что в условиях 2 требования, первое это на проверку a < b + c, а второе на проверку a >= b + c. Ниже мой коммент прочитай, возможно поможет.
Lou Domico Java Developer
21 апреля, 14:09
С помощью boolean'a
int a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt();
        boolean abc = a < b + c;
        boolean bac = b < a + c;
        boolean cab = c < a + b;

        if (abc && bac && cab)
            System.out.println(TRIANGLE_EXISTS);
        else
            System.out.println(TRIANGLE_NOT_EXISTS);
RedFoxSex
Уровень 4
13 мая, 18:09
Хаха, 8 строчек кода. Вон чего я написал. Сдал с 1го раза, но по-моему переборщил. Но глядя на else у тебя, решение не примут, поскольку там требование стоит "Если хотя бы в одном случае сторона больше либо равна, то треугольник существовать не может". Из этого получается что проверку на a >= b + c и т.д. в коде сделать нужно, а у тебя идет проверка только на a < b + c, а это половина условия. Scanner scan = new Scanner(System.in); int strn1 = scan.nextInt(); int strn2 = scan.nextInt(); int strn3 = scan.nextInt(); boolean isExists1 = (strn1 < (strn2 + strn3)); boolean isExists2 = (strn2 < (strn1 + strn3)); boolean isExists3 = (strn3 < (strn1 + strn2)); boolean isNotExists1 = (strn1 >= (strn2 + strn3)); boolean isNotExists2 = (strn2 >= (strn1 + strn3)); boolean isNotExists3 = (strn3 >= (strn1 + strn2)); if (isExists1 && isExists2 && isExists3) { System.out.println(TRIANGLE_EXISTS); } else if (!(isNotExists1 && isNotExists2 && isNotExists3)) { System.out.println(TRIANGLE_NOT_EXISTS); }
Allionore
Уровень 4
18 мая, 19:01
Офигеть :D
Dani
Уровень 5
19 апреля, 20:51
Scanner keyboard = new Scanner(System.in); int a = keyboard.nextInt(); int b = keyboard.nextInt(); int c = keyboard.nextInt(); { if (a<(b+c) && (b<(a+c) && (c<(b+a)))) System.out.println("треугольник существует"); else System.out.println("треугольник не существует"); } }
Surikat767 QA Engineer в АО Финам
1 апреля, 09:06
Scanner sc = new Scanner(System.in);

        int a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt();

        if ((a < b + c) && (b < a + c) && (c < a + b)) {
            System.out.println(TRIANGLE_EXISTS);
        } else {
            System.out.println(TRIANGLE_NOT_EXISTS);
        }
Alexey
Уровень 4
12 марта, 17:21
if ((a + b > c) && (a + c > b) && (b + c > a)) решал таким уравнением окончательно, а до этого if ((a + b > c) || (a + c > b) || (b + c > a)) и последнее требование задачи не проходило. Объясните пожалуйста в чем соль. (не могу понять почему здесь "и" а не "или" , ведь по сути мы выбираем одно уравнение из трех, соответственно "или".
Ksenia
Уровень 13
14 марта, 00:22
ты сравниваешь сумму сторон треугольника с третьей стороной. У тебя есть ОДИН треугольник с ТРЕМЯ сторонами, и ты в условии проверяешь каждую сторону: каждая сторона треугольника должна быть меньше суммы двух других, поэтому используется оператор И(&&). Если хоть одно условие не пройдет, такой треугольник существовать не будет.
Anonymous #3285089
Уровень 3
29 марта, 16:39
По причине: "|| — оператор “ИЛИ”. Возвращает true, когда хотя бы один из операндов истинный", что противоречит условиям задачи. Более подробно вы можете ознакомиться с операторами здесь: https://javarush.com/groups/posts/1924-operacii-nad-chislami-v-java
Plavlenniy_Syrok
Уровень 6
25 апреля, 14:50
Решал через оператор || (или), только перед скобками выносил ! Scanner console = new Scanner (System.in); int a = console.nextInt(); int b = console.nextInt(); int c = console.nextInt(); if (!(a < b + c) || !(b < a + c) || !(c < a + b)) { System.out.println(TRIANGLE_NOT_EXISTS); } else System.out.println(TRIANGLE_EXISTS);
Genesis Channel
Уровень 5
9 февраля, 14:12
Scanner keyboard = new Scanner(System.in); int a = keyboard.nextInt(), b = keyboard.nextInt(), c = keyboard.nextInt(); if((a<(b+c) && (b<a+c) &&(c<(a+b)))) System.out.println("треугольник существует"); else System.out.println("треугольник не существует");
Антон
Уровень 35
23 января, 17:53
А зачем в правильном решении и многие внизу ставят кучу скобок в условии? Сложение имеет выше приоритет чем сравнение, условие между логическими операторами принимается тоже целиком. if (a < b + c && b < a + c && c < a +b); <- Так тоже корректно работает. Объясните пожалуйста.
Anonymous #3233448
Уровень 6
29 декабря 2022, 15:29
Scanner console = new Scanner(System.in); int a = console.nextInt(); int b = console.nextInt(); int c = console.nextInt(); int first = (b + c - a); int second = (c + a - b); int third = (b + a - c); if (first > 0 && second > 0 && third > 0){ System.out.print(TRIANGLE_EXISTS); } else{ System.out.print(TRIANGLE_NOT_EXISTS); }