Здесь иллюстрируется использование стандартной функции sqrt.
var
a,b: real; // катеты
c: real; // гипотенуза
begin
write('Введите катеты прямоугольного треугольника: ');
readln(a,b);
c := sqrt(a*a+b*b);
writeln('Гипотенуза = ',c);
end.
Категория: Статьи » Программирование » Pascal
script1adsense2code
script1adsense3code
Python Basic: упражнение 60 с решением
Напишите программу на Python для вычисления гипотенузы прямоугольного треугольника.
Иллюстрированная презентация:
Пример решения : –
Код Python:
from math import sqrt
print("Input lengths of shorter triangle sides:")
a = float(input("a: "))
b = float(input("b: "))
c = sqrt(a**2 + b**2)
print("The length of the hypotenuse is", c )
Пример вывода:
Длина ввода более коротких сторон треугольника: а: 3 б: 4 Длина гипотенузы составляет 5,0
Блок – схема:
Визуализируйте выполнение кода Python:
Следующий инструмент визуализирует, что компьютер делает шаг за шагом при выполнении указанной программы:
Редактор кода Python:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Напишите программу на Python для преобразования высоты (в футах и дюймах) в сантиметры.
Далее: Напишите программу на Python для преобразования расстояния (в футах) в дюймы, ярды и мили.
Оглавление:
- 1 Задача — Найти длину гипотенузы
— программирование на Pascal, Си, Кумир, Basic-256, Python- 1.1 Pascal
- 1.2 Язык Си
- 1.3 Python
- 1.4 КуМир
- 1.5 Basic-256
Задача — Найти длину гипотенузы
— программирование на Pascal, Си, Кумир, Basic-256, Python
По двум введенным пользователем катетам вычислить длину гипотенузы.
Катеты и гипотенуза — это стороны прямоугольного треугольника. Если известны длины катетов, то длина гипотенузы находится по теореме Пифагора:
«Квадрат гипотенузы равен сумме квадратов катетов»
С помощью формулы это выражается так:
c2 = a2 + b2
Отсюда следует, что длина гипотенузы равна квадратному корню из суммы квадратов катетов:
c = sqrt(a2 + b2)
(sqrt() — обозначение функции извлечения корня).
Обычно в языках программирования предусмотрен оператор возведения в степень. Например, в языке программирования Python он обозначается двумя звездочками (**), а в Basic знаком ^. Однако в Pascal нет операции возведения в степень.
Для извлечения корня обычно существует специальная функция, а не оператор.
Pascal
var
a,b,c: real;
begin
write(‘a=’);
readln(a);
write(‘b=’);
readln(b);
c := sqrt(a*a + b*b);
writeln(‘c=’,c:1:2);
end. a=3
b=4
c=5.00
Язык Си
#include <stdio.h>
#include <math.h>
main() {
float a,b,c;
printf(«a=»);
scanf(«%f»,&a);
printf(«b=»);
scanf(«%f»,&b);
c = sqrt(pow(a,2)+pow(b,2));
printf(«%.2fn», c);
} a=3
b=4
5.00
Компилировать с ключом -lm
Python
import math
a = float(input(«a=»))
b = float(input(«b=»))
c = math.sqrt(a**2 + b**2)
print(«c=%.2f» % c) a=3
b=4
c=5.00
КуМир
алг гипотенуза
нач
вещ a, b, c
вывод «a=»
ввод a
вывод «b=»
ввод b
c := sqrt(a**2 + b**2)
вывод «c=»,c
кон a=3
b=4
c=5
Basic-256
input «a=», a
input «b=», b
c = sqrt(a^2 + b^2)
print «c=» + c a=3
b=4
c=5
Did you find apk for android? You can find new Free Android Games and apps.
Перейти к содержанию
Найти длину гипотенузы
Просмотров 6.1к. Обновлено 26 октября 2021
Катеты и гипотенуза — это стороны прямоугольного треугольника. Если известны длины катетов, то длина гипотенузы находится по теореме Пифагора:
«Квадрат гипотенузы равен сумме квадратов катетов»
С помощью формулы это выражается так:
c2 = a2 + b2
Отсюда следует, что длина гипотенузы равна квадратному корню из суммы квадратов катетов:
c = sqrt(a2 + b2)
(sqrt() — обозначение функции извлечения корня).
Обычно в языках программирования предусмотрен оператор возведения в степень. Например, в языке программирования Python он обозначается двумя звездочками (**), а в Basic знаком ^. Однако в Pascal нет операции возведения в степень.
Для извлечения корня обычно существует специальная функция, а не оператор.
Pascal
длина гипотенузы паскаль
var
a,b,c: real;
begin
write('a=');
readln(a);
write('b=');
readln(b);
c := sqrt(a*a + b*b);
writeln('c=',c:1:2);
end.
a=3
b=4
c=5.00
Язык Си
#include
#includemain() {
float a,b,c;
printf("a=");
scanf("%f",&a);
printf("b=");
scanf("%f",&b);
c = sqrt(pow(a,2)+pow(b,2));
printf("%.2fn", c);
}
a=3
b=4
5.00
Компилировать с ключом -lm
Python
длина гипотенузы python
import matha = float(input("a="))
b = float(input("b="))
c = math.sqrt(a**2 + b**2)
print("c=%.2f" % c)
a=3
b=4
c=5.00
КуМир
алг гипотенуза
нач
вещ a, b, c
вывод "a="
ввод a
вывод "b="
ввод b
c := sqrt(a**2 + b**2)
вывод "c=",c
кон
a=3
b=4
c=5
Basic-256
input "a=", a
input "b=", b
c = sqrt(a^2 + b^2)
print "c=" + c
a=3
b=4
c=5
Что сложного может быть в вычислении гипотенузы?
Время на прочтение
2 мин
Количество просмотров 47K
В библиотеках различных языков программирования часто может быть включена функция для вычисления гипотенузы прямоугольного треугольника (или вы сами можете написать такую функцию для решения той или иной задачи).
На первый взгляд это может показаться тривиальной задачей, не так ли? Если сторонами треугольника являются x и y, то, формально, формулой для вычисления гипотенузы будет:
sqrt(x*x + y*y)
Это работает теоретически, но на практике данный подход может приводить к ошибке. Если значение x достаточно велико, то вычисление x*x может привести к переполнению типа данных (ни один тип данных от этого не застрахован, если не рассматривать длинную арифметику), и результатом вычислений будет бесконечность.
Одним из вариантов избежать вероятности переполнения является следующая последовательность действий:
max = maximum(|x|, |y|);
min = minimum(|x|, |y|);
r = min / max;
return max*sqrt(1 + r*r);
Заметим, что значение подкоренного выражение лежит на интервале от 1 до 2, что никак не может привести к переполнению при вычислении квадратного корня. Единственное место в котором может случиться переполнение, это финальное умножение. Но, если переполнение и произошло, это лишь означает, что результат настолько велик, что не может быть вмещён в используемый тип данных, и это уже не проблема выбора алгоритма а проблема выбора типа данных.
Для того, чтобы увидеть как вышеприведённый алгоритм может преуспеть в то время как решение в лоб упасть, приведём небольшой пример. Пусть M — наибольшее число, которое может быть представлено выбранным типом данных. Для типа данных double, M будет порядка 10308. Пусть x и y эквивалентны величине 0.5 M. Алгоритм должен вернуть значение примерно равное 0.707 M, что не должно переполнить выбранный тип данных. Но решение в лоб не даст правильного ответа, в то время как предложенный алгоритм преуспеет.
Ради интереса проверил стандартную функцию (hypot или _hypot) включённую в math.h, и результат порадовал.
Вывод, который я сделал для себя: если в библиотеку включена какая-то функция, которая на первый взгляд кажется элементарной и пишется в две строчки, то есть большая вероятность, что сделано это не просто так и есть какие-то глубокие причины для такого решения.
По ссылке на оригинальный материал могут быть найдены комментарии к вопросу о том, не будет ли потеряна точность при таком способе нахождения гипотенузы.