Другие языки программирования и технологии

Подскажите почему Паскаль не делает нужного расчета и выводит на экран просто S вместо его значения? Как это исправить?

Хорошо было бы еще условие задачи написать... Допустим, у нас есть катет a, длина которого вводится пользователем. Еще есть diff - разница длин катета a и гипотенузы. И нужно найти площадь треугольника.

1) Как уже написали выше, выводится, как раз, значение S, которое и есть NaN.

2) 8 строка:
c = (a * a - dif) / 2 + dif
что это за прикол?)) У тебя есть катет a и dif, что является разницей c и a, почему бы не сделать по-человечески: c = a + dif ?

3) Собственно, о твоем случае(вычислять катет как корень разности квадратов катета и гипотенузы, а не наоборот это сильно):
ты вводишь: a = 5, dif = 1
c = (25 - 1) / 2 + 1 = 12 + 1 = 13
дальше b = sqrt(a * a - c * c) = sqrt(5 * 5 - 13 * 13) = sqrt(25 - 169), что и дает NaN, так как квадратный корень из отрицательного числа, увы, не берется
Максат Эсенов
Максат Эсенов
677
Лучший ответ
Олег Гапонов Простите, я смеюсь из-за собственной тупости пхпхпх. Спасибо, что так подробно расписали, очень помогло)
Потому что либо у тебя ошибка в расчетах (извиняй, лень проверять), либо ты ввел невозможный треугольник с отрицательной площадью. Введи 3 и 2, должно получиться 6.

>выводит на экран просто S вместо его значения
Нет, он выводит значение, и оно NaN (Not a Number)
Аян Жетпісбаев
Аян Жетпісбаев
90 150
Потому, что вместо того, чтобы от квадрата гипотенузы отнять квадрат катета, ты от квадрата катета отнимаешь квадрат гипотенузы. А потом пытаешься взять квадратный корень из отрицательного числа - на что и получаешь NaN.

Впрочем, длину гипотенузы ты тоже считаешь неправильно.
У тебя половины данных нет
Сергей Boss
Сергей Boss
20 348
Олег Гапонов Объясните, пожалуйста, тогда каких конкретно? "а" и "диф" вводятся, "с" находится посредством операции над "а" и "диф", а "с" получается с помощью теоремы Пифагора.

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