Раздел: Стандартные функции Паскаля
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее… |
Функция Power в Паскале (и многих других языках программирования) выполняет возведение числа в степень.
Синтаксис для вещественных чисел:
function Power(Base: Double; Expon: Double) : Double;
Синтаксис для целых чисел:
function Power(Base: LongInt; Expon: LongInt) : LongInt;
Эта функция возводит число Base
в степень Expon
и возвращает результат. В реальности функция возвращает результат выражения:
Exp(Expon * Ln(Base))
ВАЖНО!
Всё, что сказано выше, взято из официальной документации
FreePascal. Однако документация иногда расходится с действительностью. Во всяком случае, мой компилятор не соответствует документации. А именно:
- В документации сказано, что функция объявлена в модуле SYSTEM. Однако без подключения модуля MATH компилятор выдаёт ошибку. Из этого следует, что на самом деле функция объявлена в модуле MATH.
- В документации приведён синтаксис как для целых, так и для вещественных чисел. Однако на самом деле функция работает только с вещественными числами. При попытке использовать целые числа компилятор также выдаёт ошибку.
- Возможно, в более новых версиях эти проблемы уже исправлены. Но у меня было именно так (версия FPC 3.0.0).
Пример использования функции Power
Пример приведён ниже:
program funcpower; uses Math; var x, y, z : single; begin x := 2; y := 3; z := Power(x, y); //Z = X в степени Y WriteLn(z:0:2); ReadLn; end.
Здесь мы число 2 (переменная Х) возводим в степень 3 (переменная Y), то есть вычисляем следующую формулу:
Z = XY
Обратите внимание на подключенный модуль MATH.
Эта статья входит в раздел о подпрограммах модуля SYSTEM. И по идее описания функции Power здесь не должно быть. Но, так как в документации сказано, что функция Power объявлена в модуле SYSTEM, я решил включить данную статью именно в этот раздел (я же не виноват, что в документации косяк))).
Возведение в степень в Паскале
Возведение в степень в Паскале можно выполнить и без какой-то специальной функции,
используя функцию вычисления натурального логарифма
и функцию вычисления экспоненты.
О том, как это сделать, я рассказал здесь.
Однако, если есть специальная функция для возведения числа в степень, то почему бы ей и не воспользоваться? С одной стороны. С другой стороны — эта функция совершенно неожиданно требует подключения модуля MATH.
В документации сказано, что по сути функция Power работает по формуле возведения в степень в Паскале:
Exp(Expon * Ln(Base))
Однако, если мы будем делать именно так, эта формула будет неправильно работать с
отрицательными числами, потому что в документации сказано, что функция Ln работает только с положительными числами.
Так что функция Power в реальности несколько сложнее, чем приведённая выше формула.
Поэтому для разминки мы напишем свой аналог функции Power, который будет работать правильно. Но для начала вспомним как вычисляется степень числа:
Также напомню, что любое число в нулевой степени равно 1, а ноль в любой степени равен 0 (кроме нуля в нулевой — ноль в нулевой степени не определён, но мы будем возвращать в таких случаях ноль, хотя функция Power возвращает 1).
А теперь наш аналог функции Power:
function AVPower(Base: Double; Expon: Double) : Double; var m : byte; i : integer; Res : Double; begin m := 0; if Expon < 0 then m := 1 //Отрицательная степень else if Expon = 0 then m := 2 //Нулевая степень else m := 3; //Положительная степень if Base < 0 then m := 10 + m //Отрицательное число else if Base = 0 then m := 20 + m //Число равно 0 else m := 30 + m; //Положительное число case m of 11 : //Отрицательное число, отрицательная степень begin //Если Expon - не целое число, то получаются комплексные числа Res := 1 / Exp(Abs(Expon) * Ln(Abs(Base))); i := Round(Expon); if Odd(i) then Res := -1 * Res; end; 12, 32 : //Нулевая степень Res := 1; 13 : //Отрицательное число, положительная степень begin //Если Expon - не целое число, то получаются комплексные числа Res := Exp(Expon * Ln(Abs(Base))); i := Round(Expon); if Odd(i) then Res := -1 * Res; end; 21..23 : //Число равно нулю Res := 0; 31 : //Положительное число, отрицательная степень Res := 1 / Exp(Abs(Expon) * Ln(Base)); 33 : //Положительное число, положительная степень Res := Exp(Expon * Ln(Base)); end; AVPower := Res; end;
Я сознательно немного всё усложнил, чтобы вас запутать )))
Пример использования функций Power и её аналога в программе:
x := 2; y := 3; z := Power(x, y); //Z = X в степени Y WriteLn(z:0:2); z := AVPower(x, y); //Z = X в степени Y WriteLn(z:0:2);
Здесь есть один подвох — если вы попытаетесь возвести отрицательное число в не целую степень, например, так:
-23,5
то стандартная функция Power вызовет ошибку во время выполнения программы. В своём аналоге я этого избежал, но надо понимать, что результат в этом случае будет неправильным (хотя с моей точки зрения это всё-равно лучше, чем аварийное завершение программы).
Это происходит потому, что при таком раскладе результатом являются комплексные числа, а операции с комплексными числами выполняются по другим правилам.
В реальных программах подобные ситуации надо дополнительно обрабатывать (хотя бы предупреждать пользователя о том, что при отрицательном основании и не целой степени функция вернёт неправильный результат).
Ещё в моей функции используется функция Odd, о которой я ещё не рассказывал. Вкратце скажу, что она определяет, является ли число чётным. Более подробно о ней расскажу в отдельной статье.
|
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… |
|
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение — ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. |
Мы уже знаем, какие существуют функции для целых переменных. Это – нахождение модуля числа (Функция Abc), а также возведение числа в квадрат (Функция Sqr). В этом уроке мы рассмотрим функции, применяемые к дробным числам. Это функции Sqr — квадрат числа, Abs — модуль числа, Sqrt — корень числа, а также известные всем математические функции Sin, Cos, Arctan, Ln, Exp, Pi.
Program number12; uses crt; var A, B:real; begin clrscr; A:=2.0; B:=Sqr(A); writeln('Sqr(2.0)=',B:4:2); B:=Abs(-A); writeln('Abs(-2.0)=',B:4:2); B:=Sqrt(A); writeln ('Sqrt(2)=',B:4:2); B:=Sin(A); writeln('Sin(2)=',B:6:3); B:=Cos(A); writeln('Cos(2)=',B:6:3); B:=Arctan(A); writeln('Arctan(2)=',B:6:3); B:=Ln(A); writeln('Ln(2)=',B:10:9); B:=Exp (A); writeln('Exp (2)=',B:10:9); B:=Pi; writeln('Pi=',B:10:9); readln end.
В строке №7 записывается функция Sqr. Это функция возведения числа в квадрат.
В строке №9 записывается операция нахождения модуля числа.
Функции Sqr и Abs мы разбирали в уроке Abs, Sqr в Pascal.
В строке №11 записывается функция Sqrt. Данная функция подсчитывает корень числа, стоящего в скобках после слова Sqrt. В нашем случае функция Sqrt будет считать корень из числа «2».
В строке №13 записываем функцию Sin. Данная функция будет подсчитывать синус числа, стоящего в скобках после записи функции.
Строка №15. Функция Cos подсчитывает косинус числа, стоящего в скобках после функции.
Строка №17. Функция Arctan вычисляет арктангенс числа, стоящего в скобках после записи функции.
Строка №19. Функция Ln подсчитывает логарифм числа, стоящего в скобках после записи функции.
Строка №21. Функция Exp возводит число «e» (экспонента — 2.72…) в степень, значение которой указывается в скобках после слова Exp. Т.е. в нашем случае число «e» будет возведено в степень «2».
Строка №23. Переменной «B» будет присвоено значение числа «?».
Дополнение к материалу.
- Функции Sqrt, Sin, Cos, Arctan, Ln, Exp, Pi определены только для вещественных (дробных) чисел.
- В Паскале не существует операции возведения в степень. Есть только операция возведения числа в квадрат (Sqr). Чтобы возвести число в степень используют операцию умножения. Например, чтобы возвести число 3 в 5-ю степень необходимо записать 3*3*3*3*3
Возведение в степень
В языке Pascalотсутствует операция возведения в
степень. Для возведения любого числа в
целую, положительную степень вы можете
использовать следующий код:
{Пример
демонстрирует возведение числа Xв степеньN}
programStepen;
var
X,
Res: Real;
N,
I: Integer;
begin
{***
Ввод данных ***}
Write(‘Введите
значения X и N:’);
Readln(X,
N);
{***
Возведение в степень ***}
Res:= 1; {Присваиваем начальное значение
переменнойRes}
forI:= 1toNdo {Цикл возведения в степень}
Res
:= Res * X;
{***
Вывод результата на экран ***}
Writeln(‘X^N=’,
Res:5:2);
end.
Цикл возведения
в степень целесообразно применять, если
значение степени заранее неизвестно.
Если требуется
возвести число в квадрат или в куб, то
проще поступить следующим образом: Y
:= X * XилиY := X
* X * X.
Для возведения
числа «–1» в целую, положительную степень
рекомендуется следующий код:
ifOdd(N)then
{Если число нечетное… }
Y
:= –1
else{Иначе (если число четное)… }
Y:= 1;
Odd– это функция, возвращающая логический
результатTrue, если
аргумент является нечетным числом,
иначе возвращаетFalse.
3.6. Тип данных «массив» – объявление и использование
Массив —
упорядоченный набор данных для хранения
множества элементов одного типа,
идентифицируемых с помощью одного или
нескольких индексов. Количество
используемых индексов массива может
быть различным. Массивы с одним индексом
называют одномерными, с двумя — двумерными
и т.д. Одномерный массив соответствует
вектору в математике, двумерный —
матрице. Массивы с числом измерений >
2встречаются редко.
Формат объявления
переменных типа «массив» представлен
ниже:
var
<список
переменных> = array[<индексы>]of<тип данных>;
где <список
переменных>– наименование одной
или нескольких переменных (через
запятую);
<индексы>– описание диапазона индексов для
каждого измерения массива, например:
— [1..10] –
соответствует одномерному массиву
(вектору), первый элемент которого имеет
индекс «1», а последний «10» (всего 10
элементов);
— [0..4] – соответствует
одномерному массиву, первый элемент
которого имеет индекс «0», а последний
«4» (всего 5 элементов);
— [1..5, 1..4] –
соответствует двухмерному массиву
(матрице), состоящему из 5 строк (индексация
от 1 до 5) и 4 столбцов (индексация от 1 до
4);
<тип данных>– любой тип данных, известный компиляторуPascal, например,Integer,Byte,Real,Boolean,Char,string, а также типы данных,
объявленные программистом.
Ниже приведены
примеры объявления переменных типа
«массив»:
{2
вектора из 10 элементов типа Integer.
Индексация начинается с «1»}
Vect1,
Vect2: array[1..10]
of
Integer;
{Матрица
вещественных чисел 8 х 6. Индексация
начинается с «0»}
Matr:array[0..7, 0..5]ofReal;
{Список
из 20 строк.
Индексация начинается с «1»}
StrList:
array[1..20]
of string;
Во многих случаях
более удобным является однократное
объявление типа данных «массив» в начале
программы (в секции type).
Объявленный таким способом тип данных
в дальнейшем можно использовать при
описании переменных. Данный способ
имеет следующие преимущества:
— при необходимости
внесения изменений в объявление массива
достаточно это сделать в одном месте;
— переменные,
объявленные в секции varс использованием отдельного типа,
являются совместимыми, т.е. между ними
допускается операция присвоения «:=»;
— при использовании
в программе процедур и функций у
программиста появляется возможность
объявления параметров процедуры, имеющих
тип «массив».
Ниже представлен
пример объявления нового типа данных
«массив», а также переменных этого типа:
type
{Объявление
нового типа данных «матрица»}
TMatrix=array[1..10, 1..20]ofReal;
var
{Объявление
переменных типа
TMatrix}
Matrix1,
Matrix2, Matrix3: TMatrix;
…………………………………
Для любого
элемента массива можно узнать его
текущее значение, а также записать новое
значение. Каждый элемент массива имеет
свои координаты, указать которые можно
в квадратных скобках. Ниже приведены
примеры чтения и записи элементов
одномерного массива:
{Установка
нового значения 3-го элемента вектора}
Vect[3]
:= 3.45;{Установка заданного числового
значения}
Vect[3]
:=Random;{Установка
случайного значения}
Readln(Vect[3]);{Значение вводится пользователем с
клавиатуры}
{Чтение
2-го элемента вектора}
Value:=Vect[2];{Присвоение в
переменную Value}
Writeln(Vect[2]);{Вывод на экран}
{Вычисление
суммы первых трех элементов}
Summa:=Vect[1] +Vect[2]
+Vect[3];
Ниже приведены
примеры чтения и записи элементов
двухмерного массива (матрицы):
{Установка
заданного значения элемента матрицы с
координатами 4, 3}
{индекс
4 – это номер строки матрицы, 3 – номер
столбца матрицы}
Matrix[4,
3] := 123.456;
Readln(Matrix[2,
4]);{Ввод элемента (2, 4) с клавиатуры}
Writeln(Matrix[I,J]);{Вывод элемента (I, J)
на экран}
В
качестве индекса элемента массива может
выступать явно указанное целое значение,
либо целочисленная переменная. Чаще
всего обработка элементов массива
выполняется в цикле, поэтому в качестве
индекса используется переменная-счетчик
цикла, например:
for
I := 1 to
10 do
{цикл
по I от
1 до 10}
Vect[I]
:=Random;{I-му элементу
присваивается случайное число}
В
приведенном ниже примере осуществляется
заполнение элементов матрицы случайными
числами с помощью функции Random,
вывод полученных значений на экран,
также осуществляется поиск наибольшего
значения и вывод его (вместе с координатами)
на экран.
programFindMaxElement;
const
{Объявление
констант}
Rows
= 5; {Число строк матрицы}
Cols
= 4; {Число столбцов матрицы}
var
{Объявление
массива размером Rows x Cols}
Mas:
array[1..Rows,
1..Cols] of
Real;
I,
J: Integer; {Объявление переменных цикла}
MaxValue:
Real; {Максимальное значение}
MaxRowIndex:
Integer; {Номер строки максимального
значения}
MaxColIndex:
Integer; {Номер столбца максимального
значения}
begin
{Цикл
заполнения массива и вывода элементов
на экран}
forI := 1toRowsdo{Цикл по I (перебор
строк матрицы)}
begin{можно было обойтись и без этого
begin..end }
forJ := 1toColsdo{Цикл по J (перебор
столбцов матрицы)}
begin{а этот begin..end требуется обязательно}
{Присваиваем
элементу (I, J) случайное значение}
Mas[I,
J] := Random;
{Печатаем
значение элемента (все — на одной строке)}
Write(Mas[I,
J]:8:2, ‘ ‘);
ifJ = Colsthen{Если это последний столбец,
}
Writeln;
{то осуществляем перевод строки}
end;
end;{Данный begin..end здесь — для улучшения
читабельности кода}
{Перед
началом поиска максимального значения
переменная
MaxValue
уже должна иметь любое значение, но это
значение
не
должно быть больше, чем элементы матрицы.
Поэтому
достаточно
взять в качестве первоначального
значения
любой
элемент матрицы Mas, например самый
первый}
MaxValue
:= Mas[1, 1]; {Запоминаем первый элемент}
MaxRowIndex
:= 1; {Запоминаем номер строки 1-го элемента}
MaxColIndex
:= 1; {Запоминаем номер столбца 1-го
элемента}
{Цикл
поиска максимального элемента}
forI := 1toRowsdo{Цикл по I (перебор
строк матрицы)}
forJ := 1toColsdo{Цикл по J (перебор
столбцов матрицы)}
begin
{Если
текущий элемент (I, J) больше, чем MaxValue,
то
записываем этот элемент в MaxValue и сохраняем
его координаты}
if
Mas[I, J] > MaxValue then
begin
MaxValue
:= Mas[I, J];
MaxRowIndex
:= I;
MaxColIndex
:= J;
end;
end;
{Выводим
найденные значения на экран}
Writeln(‘Max
value=’, MaxValue:8:2, ‘;
Row=’,
MaxRowIndex,
‘; Col=’,
MaxColIndex);
Readln;
end.
Данный
пример весьма прост и снабжен подробными
комментариями. Очень важно детально
разобраться с данным примером, поскольку
от этого зависит успешность выполнения
задания из варианта (п. 3.8).
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
На занятии будет объяснен алгоритм работы с функциями на Паскале, рассмотрены стандартные функции. Будут разобраны примеры использования функций с параметрами и без параметров.
Содержание:
- Стандартные функции языка Pascal
- Арифметические функции (основные)
- Функции преобразования типов
- Пользовательские функции Pascal
- Самостоятельная работа
Арифметические функции (основные)
Функция | Назначение | Тип результата |
---|---|---|
abs (x) | абсолютное значение аргумента | совпадает с типом аргумента |
sqr (x) | квадрат аргумента | совпадает с типом аргумента |
sqrt (x) | квадратный корень аргумента | вещественный |
cos (x) | косинус аргумента | вещественный |
sin (x) | синус аргумента | вещественный |
arctan (x) | арктангенс аргумента | вещественный |
exp (x) | ex | вещественный |
ln (x) | натуральный логарифм | вещественный |
int (x) | целая часть числа | вещественный |
frac (x) | дробная часть числа | вещественный |
Функции преобразования типов
round (x) | — округляет вещественное число до ближайшего целого. |
trunc (x) | — выдает целую часть вещественного числа, отбрасывая дробную. |
Пользовательские функции Pascal
Функция в Паскале — это подпрограмма, которая в отличие от процедуры всегда возвращает какое-либо значение. Для этого в теле функции её имени присваивается вычисленное значение — результат, который она возвращает.
- Функция – это подпрограмма, результатом работы которой является определенное значение.
- Функции используются для:
- выполнения одинаковых расчетов в различных местах программы;
- для создания общедоступных библиотек функций.
- Синтаксис:
- заголовок начинается служебным словом
function
- описание формальных параметров (тех, значения которых передаются из основной программы в функцию):
- параметры-переменные — параметры, значения которых становятся доступны и в основной программе (возвращаются в программу)
- тип возвращаемого функцией результата описывается в конце заголовка функции через двоеточие:
- Вызывается функция в теле основной программы, только если ее имя фигурирует в каком-либо выражении. В отличие от процедуры, которая вызывается отдельно.
- Внутри функции можно объявлять и использовать локальные переменные:
- значение, которое является результатом, записывается в переменную, имя которой совпадает с названием функции; объявлять ее НЕ НАДО:
Рассмотрим синтаксис:
var …;{объявление глобальных переменных} function название (параметры): тип результата; var…; {объявление локальных переменных} begin … {тело функции} название:=результат; {результат вычислений всегда присваивается функции} end; begin … {тело основной программы} end.
Пример: написать функцию, которая вычисляет наибольшее из заданных двух значений
Решение:
Вызов функции:
PascalABC.NET
:
Правила описания функции:
1. Мы должны написать тип значения, которое возвращает функция.
2. Переменная Result
хранит результат функции.
function f(x: real): real; begin Result := x * x + 1; end;
Вызов функции стоит в выражении:
// основная программа begin var x := 5; var r := Sqrt(x) + f(x); end.
Задача function 0. Написать функцию, которая вычисляет наибольшее из заданных трех значений. Функция с тремя параметрами.
✍ Пример результата:
Введите три числа: 4 1 6 наибольшее = 6
Пример: Написать функцию на Паскале, которая складывает два любых числа
✍ Пример результата:
первое число: 2 второе число: 5 сумма = 7
✍ Решение:
1 2 3 4 5 6 7 8 9 10 11 12 |
var x,y:integer; function f(a,b:integer):integer; begin f:= a+b; end; begin writeln('первое число:'); readln(x); writeln('второе число:'); readln(y); writeln('сумма= ',f(x,y)); end. |
В рассмотренном примере использования функции в Паскале: функция f
имеет два целочисленных параметра — a
и b
. Через двоеточие в заголовке функции (строка 2) указано, что значение, вычисляемое функцией, будет тоже целочисленным. В теле функции вычисляемая сумма присваивается имени функции. А в основной программе вызов функции осуществляется в качестве параметра оператора writeln
.
Таким образом, главное отличие функции от процедуры — это то, что функция производит какие-либо вычисления и выдает в программу результат в виде значения, в то время как процедура чаще всего выполняет какие-либо действия с результатом, например, выводит его на экран (функция этого делать не может).
Задача function 1. При помощи функции найти среднее арифметическое двух чисел (функция с двумя параметрами).
✍ Пример результата:
Введите два числа: 4 7 среднее арифметическое = 5,5
Пример: Составить программу с функцией для вычисления факториала числа.
Показать решение:
Pascal | PascalABC.NET | ||||
|
|
В рассмотренном примере функция имеет один параметр — a
. Вычисляемое функцией значение имеет целочисленный тип, это указывается в заголовке функции (строка 2). В теле функции в цикле for
вычисляется факториал числа. Результат вычисления присваивается имени функции (строка 9). В теле программы для вывода результата функции она вызывается в операторе writeln
(строка 14), который и выводит результат на экран.
PascalABC.NET
:
Короткое определение функции:
function Sq(x: real) := x * x + 1; begin var x := 10; var r := Sq(x) + Sq(2) end.
Короткая запись
Если тело функции состоит только из одного оператора, PascalABC.NET позволяет использовать при описании сокращенный синтаксис, без ключевых слов begin
и end
:
1 2 3 4 5 6 |
## function SumXY(x,y: real) := x + y; // основная программа begin Print (SumXY(9,2)); //11 end; |
Задача function 2. Составить функцию, которая определяет сумму всех чисел от 1 до N и привести пример ее использования. N — параметр функции.
Пример:
Введите число: 100 сумма = 5050
Задача function 3. Составить функцию, которая определяет, сколько зерен попросил положить на N-ую клетку изобретатель шахмат (на 1-ую – 1 зерно, на 2-ую – 2 зерна (в два раза больше предыдущего результата), на 3-ю – 4 зерна, на 4-ю – 8 зерен…). N
— параметр функции.
Пример:
Введите номер клетки: 28 На 28-ой клетке 134217728 зерен.
Задача function 4. Описать функцию IsDigit(A)
, которая возвращает истину, если целое число A
представляет цифру (то есть A
лежит в диапазоне 0–9). В основной программе вывести значение этой функции для N
(N ≥ 0) данных чисел.
Пример:
Введите N: 3 Введите число: 2 >>> true Введите число: 34 >>> false Введите число: 4 >>> true
Задача function 5. Вычисление степени числа с помощью функции на языке Паскаль.
Пример:
Введите число: 3 Введите степень числа: 2 Результат 3^2 = 9
Задача function 6. Описать функцию Calc(A, B, Operation)
вещественного типа, выполняющую над ненулевыми вещественными числами A
и B
одну из арифметических операций и возвращающую ее результат. Вид операции определяется целым параметром Operation
: 1
— вычитание, 2
— умножение, 3
— деление, остальные значения — сложение. С помощью Calc
выполнить для данных A
и B
операции, определяемые данными целыми N1
, N2
, N3
.
Пример:
Введите два числа: 5 7 Введите номер операции (1 — вычитание, 2 — умножение, 3 — деление, остальные значения — сложение): 2 Результат 5*7 = 35
* Из задачника М. Э. Абрамян (Proc22)
Самостоятельная работа
1 вариант: Описать функцию CircleS(R)
вещественного типа, находящую площадь круга радиуса R
(R
— вещественное). С помощью этой функции найти площади трех кругов с данными радиусами. Площадь круга радиуса R вычисляется по формуле S=π∗R2
. В качестве значения Пи использовать 3.14
.
* Из задачника М. Э. Абрамян (Proc18)
Пример:
Введите радиус: 5.2 Площадь круга = 16,328 ___ Введите радиус: 6.3 Площадь круга = 19,782 ___ Введите радиус: 7.1 Площадь круга = 22,294
2 вариант: Описать функцию TriangleP(a, h)
, находящую периметр равнобедренного треугольника по его основанию a
и высоте h
, проведенной к основанию (a
и h
— вещественные). С помощью этой функции найти периметры трех треугольников, для которых даны основания и высоты (периметр = сумме длин всех сторон). Для нахождения боковой стороны b
треугольника использовать теорему Пифагора: b2=(a/2)2+h2
.
* Из задачника М. Э. Абрамян (Proc20)
Пример:
Введите основание треугольника: 6 Введите высоту треугольника: 5 Периметр треугольника = 17,83095 ___ Введите основание треугольника: ... Введите высоту треугольника: ... Периметр треугольника = ... ___ Введите основание треугольника: ... Введите высоту треугольника: ... Периметр треугольника = ...
Потренируйтесь в решении задач по теме, щелкнув по пиктограмме: