Правило треугольника
Ввести с клавиатуры три числа а, b, c - стороны предполагаемого треугольника.
Определить возможность существования треугольника по сторонам.
Результат вывести на экран в следующем виде:
"Треугольник существует." - если треугольник с такими сторонами существует.
"Треугольник не существует." - если треугольник с такими сторонами не существует.
Выдает ошибку:
Если треугольник с такими сторонами может существовать, необходимо вывести текст: "Треугольник существует."
Если треугольник с такими сторонами не может существовать, необходимо вывести текст: "Треугольник не существует."
if (a>=(b+c)||b>=(a+c)||c>=(a+b)) System.out.println("Треугольник существует.");
else System.out.println("Треугольник не существует."); //напишите тут ваш код
программа работает. но проверку не проходит?
текст который необходимо выводить Ctrl+C и Ctrl+V
Aliaksandr
7 уровень
Задача не прошла тестирование!
Обсуждается
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
RiccioMaster
8 февраля 2019, 18:16
А вы возьмите в руки линейку, карандашик, и попробуйте построить треугольник со сторонами 2, 1, 1.
0
Aliaksandr
8 февраля 2019, 18:41
if (a>=(b+c)||b>=(a+c)||c>=(a+b)) System.out.println("Треугольник не существует.");
else System.out.println("Треугольник существует."); //напишите тут ваш код
вот так правильно!
0
RiccioMaster
8 февраля 2019, 18:50
Поправка: a>=(b+c) здесь надо убрать "равно" и "или" поменять на "и". Чтобы треугольник существовал, надо чтобы сумма длин любых двух сторон была больше длинны третьей стороны.
0
Aliaksandr
8 февраля 2019, 21:20
посмотри один вариант:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String sT = reader.readLine();
double t = Double.parseDouble(sT);
t %= 5;
if (t >= 0 && t < 3)
System.out.println("зелёный");
else if (t >= 3 && t < 4)
System.out.println("жёлтый");
else if (t >= 4)
System.out.println("красный");
второй вариант:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String sx = reader.readLine();
double x = Double.parseDouble(sx);
for (int t = 0; t < 60; t = t + 5) {
if (x >= t && x < (t + 3))
System.out.println("зелёный");
else if ((x + 1) >= (t + 1) && x < (t + 4))
System.out.println("жёлтый");
else if ((x + 2) >= (t + 2) && x < (t + 5))
System.out.println("красный");
}
программы работают, обе!
я ввожу время означающее время в минутах, прошедшее с начала очередного часа [0,60)
в первом случае если я введу 61 программа посчитает!
во втором случае результата не будет....и в этом есть логика (т.к. 61 минута это 1 минуту другого часа)
так, вот пришлось разобраться с делением по модулю! что бы задача прошла проверку!
по тому, что второй вариант был написан изначально...в обход использования делеия по модулю!
ВОПРОС собственно...
второй вариант рабочий, или что-то там упущено?
0
RiccioMaster
9 февраля 2019, 09:27
Какое это имеет отношение к задаче про треугольники?
Любой алгоритм надо создавать не под конкретные значения или диапазон значений. А делать универсальное решение.
Первый алгоритм убирает целые прошедшие циклы по 5 минут и работает с остатком от деления на 5 - то есть определяет время текущего цикла и положение светофора.
Второй алгоритм ограничен отрезком времени в час - когда t становится больше 60 цикл прекращает работу. Можно выкрутиться и прописать t < Integer.MAX_VALUE, но мне такое решение не кажется изящным.
Просто для расширения кругозора (это не значит, что так НАДО делать):
Строки
Можно записать как:
В первом условии t >= 0 - излишне
Достаточно:
Собственно, если идет работа с остатком от деления на 5, то можно прописать так:
0