Вопрос задан 11.07.2026 в 11:55. Предмет Информатика. Спрашивает Каст Богдан.

Var a,b,c:real; begin writeln('введите a,b,c'); readln(a,b,c); if (a>0) and (b>0) and (c>0) then begin if (a=c) and (b=c) and (a=b) then writeln('равносторонний'); If (a=b) and (b<>c) then writeln('равнобедренный'); If (b=c) and (b<>a) then writeln('равнобедренный'); If (c=b) and (c<>a) then writeln('равнобедренный'); if (a<>b) and (c<>b) and (a<>c) then writeln('произвольный'); end; if (a<0) or (b<0) or (c<0) then writeln('такого треугольника нет'); end.

Перейти к ответам

Ответы на вопрос

Отвечает Лелів Ліда.

В данном фрагменте кода на Pascal реализуется определение типа треугольника по трём сторонам a, b, c, но в нём есть как логические, так и синтаксические ошибки.


1. Общая идея программы

Программа:

  • считывает три числа a, b, c;

  • проверяет, что они положительные;

  • пытается определить:

    • равносторонний треугольник;

    • равнобедренный треугольник;

    • произвольный (разносторонний) треугольник.


2. Ошибки в коде

❌ 1) Сравнение записано неправильно

В Pascal для «не равно» используется <>, а не просто отсутствие знака.

В коде встречается:

(bc), (ba), (ca), (ab), (cb), (ac)

Это неверно. Компилятор это не поймёт.

Правильно должно быть:

  • b <> c

  • b <> a

  • c <> a


❌ 2) Неправильные операторы сравнения

Строки вида:

(a=c)

в Pascal допустимы, но стиль лучше использовать единообразный (= без скобок).


❌ 3) Логическая ошибка в проверках равнобедренного треугольника

Условие:

(a=b) and (b<>c)

означает: равны a и b, но c отличается.

Это правильно, но в коде написано с ошибками (bc вместо b<>c).


❌ 4) Незавершённая строка

В конце:

if (a

— код обрывается, программа синтаксически неполная и не скомпилируется.


❌ 5) Лишние и неэффективные проверки

Проверка:

(a=b) and (b=c) and (a=b)

избыточна. Достаточно:

a = b and b = c

3. Логика классификации треугольника

Правильные условия:

  • Равносторонний:

    a = b and b = c
  • Равнобедренный:

    (a = b and a <> c) or
    (a = c and a <> b) or
    (b = c and b <> a)
  • Разносторонний (произвольный):

    a <> b and b <> c and a <> c

4. Исправленный вариант программы

pascal
var a, b, c: real;

begin
writeln('введите a, b, c');
readln(a, b, c);

if (a > 0) and (b > 0) and (c > 0) then
begin
if (a = b) and (b = c) then
writeln('равносторонний')
else if (a = b) or (a = c) or (b = c) then
writeln('равнобедренный')
else
writeln('произвольный');
end;
end.

5. Итог

Основные проблемы исходного кода:

  • неверный оператор «не равно»;

  • синтаксические ошибки (bc, ba, ca);

  • обрыв программы;

  • избыточные проверки;

  • отсутствие аккуратной структуры if..else.

После исправления программа корректно определяет тип треугольника по трём сторонам.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос