program mcfdncfio;
uses crt;
var a,b,c,p: integer;
begin
a: =5;
b: =3;
c: =sqrt(sqr(a)+sqr(b));
p: =a+b+c;
writeln(p);
readln;
end.
если не работает, то для c отдельно напиши
c: real;
объяснение:
здесь полная аналогия с тем, как мы складываем в обычной, десятичной системе. объясню лучше на примере.
мы знаем, что можно складывать числа "в столбик":
24
+13
37
то есть строго разряд под разрядом. но что мы делаем, когда в одном разряде получается число, больше 9? правильно, переносим десяток в старший разряд!
15
+19
24 (не 214! )
здесь та же ситуация, отличие только в том, что максимальная цифра в разряде равна 7 (как в нашей десятичной записи максимальная цифра в записи разряда равна 9, а следующее число - 10 - уже состоит из двух цифр в записи - 1 и 0). значит, если мы хотим записать число 8 в восьмеричной записи, мы напишем это как 10₈ (нижний индекс показывает систему счисления)
а теперь попробуем сложить два числа в восьмеричной системе:
21₈
+ 16₈
37₈
разряд под разрядом, ничего сложно. а давайте возьмем пример поинтереснее:
77₈
+ 77₈
7₈ + 7₈ = 16₈, это значит, что в младшем разряде мы напишем 6, а десятки припишем в старший разряд.
1
77₈
+ 77₈
*6
так как 7₈ + 7₈ + 1₈ = 17₈, то 7 записываем в свой, соответствующий, разряд, а единицу в старший, получив при этом ответ 176₈
в правильности ответа можем убедиться, переведя это все в десятичную запись: 77₈ = 63, 176₈ = 126, 63 + 63 = 126, все верно.
единственный дискомфорт при таком методе - непривычные результаты сложения. например, 7 + 7 = 14 (в десятичной записи), но в примере выше 7₈ + 7₈ = 16₈. поэтому тут нужно быть аккуратным!
Поделитесь своими знаниями, ответьте на вопрос:
Составить программу вычисления периметра прямоугольного треугольника если известно что 2 катета а=5, в=3
program pr1;
var a,b,c,p: integer;
begin
a: =5;
b: =3;
c: =sqrt(sqr(a)+sqr(b));
p: =a+b+c;
writeln ( ' периметр треугольника равен ' );
writeln(p);
end.