Практикум по информатике
Скачать 7.84 Mb.
|
§2. Стандартные и библиотечные функции в линейных программах В данном параграфе рассматриваются следующие вопросы: некоторыестандартные библиотечные функции (их библиотеки подключены автоматически), библиотечные функции (некоторые математические функции), функции даты, использование окна ввода, процедура и функции вывода окон сообщений пользовате- лю. Теория Некоторые стандартные библиотечные функции Таблица 6.2 Стандартные математические функции Функция Возвращаемое значение Abs(x) Абсолютная величина х АгсТаn(х) Арктангенс х (результат в радианах) Dec(n) Аналогична оператору n:=n-1 Cos(х) Косинус х (х выражается в радианах, а не в граду- сах) Ехр(х) Экспоненциальная функция от х (e x ) Inc(n) Аналогична оператору n:=n+1 Frac(x) Дробная часть х Int(х) Целая часть х. Несмотря на название, возвращает действительное значение (с плавающей запятой), т.е. просто устанавливает нуль в дробной части Ln(х) Натуральный логарифм от х pi Константа π Round(х) Ближайшее к х целое значение. Возвращает значе- ние целого типа. Условие "ближайшее к х" не рабо- тает, если верхнее и нижнее значения оказываются равноудаленными (например, если дробная часть точно равна 0,5). В этих случаях Delphi переклады- вает решение на операционную систему. Обычно процессоры Intel решают эту задачу в соответствии с рекомендацией IEEE округлять в сторону ближайше- го четного целого числа. Иногда такой подход на- зывают "банкирским округлением" Sin(x) Синус х (х выражается в радианах) Sqr(x) Квадрат х, т.е. X*X Sqrt(х) Квадратный корень от х Тrunc(х) Целая часть х. В отличие от Int, возвращающей дей- 311 ствительное значение, Trunc возвращает целое Замечание. В библиотеках Delphi, которые автоматически подключаются к модулю присоздании формы, нет арифметиче- ского действия «возведение в степень». Поэтому для возведения числа a в степень x можно воспользоваться следующими функ- циями x a соответствует exp(x*ln(a)). См. также раздел «Некоторые математические функции». Таблица 6.3. Функции преобразования Функция Значение Chr(n) Символ с номером n. IntToStr(n) Строка, являющаяся изображением значения целого n. FloatToStr(n) Строка, являющаяся изображением значения веще- ственного n. Различие между функциями описано ниже. FloatToStrF(n,f,l,m) Строка, являющаяся изображением значения веще- ственного n с форматом. Различие между функция- ми описано ниже. StrToInt(s) Целое, изображением является строка s. StrToFloat(s) Вещественное, изображаемое строкой s. DateToStr (Date) Преобразование Значения даты в выражении Date в строку TimeTostr(Time) Преобразование значения времени в выражении Time в строку StrToDate(S) Преобразование СтрокиS в дату StrToTime(S) Преобразование строкиS во время Pred(n) Возвращает предыдущее значение n Функция FloatToStrF(n,f,l,m) обеспечивает возможность форматного вывода вещественных чисел. Её аргументы имеют следующий смысл: n — преобразуемое значение; f — формат (способ изображения); l — точность (общее количество цифр); m — количество цифр после десятичной точки. Поле «формат» может принимать следующие значения ffGeneral — общий числовой формат. Значение преобразо- вывается в изображение десятичного числа либо с фиксирован- ной точкой, либо записанного в научном формате. Лишние нули удаляются из результирующей строки, и в случае необходимости 312 вставляется десятичная точка. Запись числа с фиксированной точкой используется, если количество цифр в числе не превыша- ет общее количество цифр, заданное пользователем, а само число не меньше 0.00001. В противном случае используется научный формат. ffExponent — научный формат. Число преобразовывается в строку вида "-d.ddd...E+dddd". Если число отрицательное, строка начинается знаком минус. Количество цифр в показателе экспо- ненты от 0 до 4. ffFixed — формат с фиксированной точкой. Число преобразу- ется в строку вида: "-ddd.ddd...". Если число отрицательное, строка начинается знаком минус. Количество цифр после деся- тичной точки не более 18. Если количество цифр превышает ве- личину, указанную пользователем, изображение числа преобра- зуется в научный формат. ffNumber — числовой формат. Возвращает строку в виде "-d,ddd,ddd.ddd..." . Он отличается от формата с фиксированной точкой только разделителями групп разрядов. ffCurrency — денежный формат. Преобразует результат и представляет его в виде суммы денег. Некоторые строковые функции Таблица 6.4. Функция Описание Concat(sl, s2, s3) Возвращает последовательное соединение строк. Эквивалентна оператору sl+s2+s3 Copy(s, pos, len) Возвращает подстроку длиной максимум len симво- лов, начинающуюся в позиции pos строки s Delete(s, pos, len) Удаляет максимум len символов из строки s, начиная с позиции pos Insert(sourse, target, pos) Вставляет строку source в строковую переменную target, начиная с позиции pos Length(s) Возвращает динамическую длину строки. Pos(substring, s) Возвращает место первого вхождения подстроки substring в строку s. Str(x, s) Преобразует численное значение х в строковую пе- ременную s Val(s, v, code) Преобразует строку s в соответствующее численное представление v. Если преобразование успешно code=0. 313 Некоторые библиотечные математические функции Библиотечные математические функции находятся в библио- теке Math. Библиотеку Math нужно обязательно подключить в разделе Uses: Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math; Таблица 6.5. Функция Возвращаемое значение АгсТаn2(y/x) Арктангенс y/x (результат в радианах). Возвращает значение угла в несущем квадранте от - π до π. Зна- чение x не может быть нулем ArcCos(x) Арккосинус x (результат в радианах) ArcSin(x) Арксинус x (результат в радианах) Log10(x) Десятичный логарифм от x Tan(x) Тангенс x (х в радианах) Power(X,Y) Возведение X в вещественную степень Y RadToDeg Перевод радиан в градусы, аналогично преобразо- ванию: degrees = radians(180/pi) DegToRad Преобразует углы, заданные в градусах, в радианы, аналогично преобразованию: radians = degrees(pi/180) Некоторые функции и процедуры даты Функции даты находятся в библиотеке SysUtils, которая под- ключается автоматически самой системой. Таблица 6.6 Функция Возвращаемое значение Date Возвращает текущую дату, установленную на ком- пьютере. Функция не имеет аргументов DecodeDate(Dat, Y,M,D) Процедура возвращает дату в виде трех величин Y(год), M(месяц), D(день) EncodeDate(Y,M,D) Функция преобразует три величины Y(год), M(месяц), D(день) в дату YearsBetween (An,At) Функция возвращает количество прошедших лет между двумя датами An и At DaySpan(An,At) Функция возвращает количество дней, прошедших между двумя датами An и At. Если в программе необходимо использовать переменные, со- держащие дату, то их нужно описать типом TDateTime в разделе 314 описания переменных. TDateTime — это стандартный объект Delphi. Ввод из окна ввода Функция InputBox выводит на экран стандартное диалоговое окно — окно ввода. Значение функции InputBox — строка, кото- рую ввел пользователь. Формат функции InputBox следующий: Переменная:= InputBox(Заголовок, Подсказка, Значение); где: Переменная — переменная строкового типа, значение кото- рой должно быть получено от пользователя; Заголовок — текст, выводимый в заголовок окна; Подсказка — текст поясняющего сообщения; Значение — текст, который будет находиться в поле ввода, когда окно ввода появится на экране. Например, следующая инструкция вызывает появление на экране окна ввода, показанного ниже. S:=InputBox('Фунты в килограммы,'Введите вес в фунтах','0'); funt:=StrToFloat(S); Если во время работы программы пользователь введет строку и щелкнет на кнопке OK, то значением функции InputBox будет введенная строка, если — на кнопке Cancel, то значением функ- ции будет строка, переданная функции в качестве параметра «Значение» (в примере 0). Вывод в окно сообщения Вывести на экран окно с сообщением можно при помощи процедуры ShowMessage или функции MessageDlg. Процедура ShowMessage выводит на экран окно с текстом и командной кнопкой OK. Формат процедуры ShowMessage : ShowMessage (Сообщение); где Сообщение — текст, который будет выведен в окне. Например, 315 ShowMessage ('Введите вес в фунтах'); Функция MessageDlg позволяет поместить в окно с сообщением один из стандартных значков, задать коли- чество и тип командных кнопок и оп- ределить, какую из кнопок нажал пользователь. Формат функции MessageDlg следующий: Выбор:=MessageDlg(Сообщение, Тип, Кнопки, КонтекстСправки); Где Сообщение — текст сообщения; Тип — тип сообщения. Тип сообщения задается именованной константой: Константа Тип сообщения MtWarning Внимание MtError Ошибка MtInformation Информация MtConfirmation Подтверждение MtCustom Обычное Кнопки — список кнопок, отображаемых в окне сообщения. Спи- сок может состоять из нескольких разделенных запятыми имено- ванных констант. Весь список заключается в квадратные скобки. Константа Кнопка Константа Кнопка mbYes Yes mbAbort Abort mbNo No mbRetry Retry mbOk Ok mbIgnore Ignore mbCancel Cancel mbAll All mbHelp Help Например, оператор r:=MessageDlg('Файл'+ Fname + ' будет удален', mtWarning, [mbOk,mbCancel], 0); вызовет появление на экране окна: Замечание Переменная r должна быть описана типом Word. Практика Задача 316 Дано: гипотенуза и прилежащий к гипотенузе угол прямо- угольного треугольника. Составить программу для вычисления катета, противолежащего заданному углу. Формула из тригоно- метрии: a=c*sin A. Компоненты Имя компонента Свойства компонента Значение Назначение Form1 Caption Катет прямоугольного тре- угольника Заголовок формы Label1 Caption WordWrap Программа вычисляет ка- тет прямоугольного тре- угольника по гипотенузе и противолежащему углу True Справочная ин- формация для пользователя программы Перенос не уме- стившихся слов на новую строку Label2 Caption Гипотенуза= Подсказка поль- зователю Edit1 Text Поле для ввода значения гипоте- нузы Label3 Caption Противолежащий угол (гр., мин., сек.)= Подсказка поль- зователю Edit2 Text Поле для ввода градусов Edit3 Text Поле для ввода минут Edit4 Text Поле для ввода секунд Label4 Caption Поле для вывода результата Button1 Caption ВЫЧИСЛИТЬ Кнопка вычисле- ния катета Button2 Caption ОЧИСТИТЬ Кнопка для очи- щения полей для ввода новых дан- ных Button3 Caption ВЫХОД Кнопка прекра- щения выполне- ния программы и закрытия формы Переменные 317 Обозначение в про- грамме Содержание Тип a Определяемый катет прямоугольного тре- угольника Вещественный c Гипотенуза Вещественный G Градусы противолежа- щего определяемому ка- тету угла Целый M Минуты противолежаще- го определяемому катету угла Целый S Секунды противолежа- щего определяемому ка- тету угла Вещественный Проект формы Текст модуля unit Unit1; ………………….. var Form1: TForm1; a:Real;// катет прямоугольного треугольника c:Real;// гипотенуза прямоугольного треугольника G,M:Integer; S:Real; Rad:Real; implementation {$R *.dfm} 318 procedure TForm1.Button1Click(Sender: TObject); begin c:=StrToFloat(Edit1.Text); G:=StrToInt(Edit2.Text); M:=StrToInt(Edit3.Text); S:=StrToFloat(Edit4.Text); Rad:=(G+(M+S/60)/60)*PI/180; a:=c*sin(Rad); Label4.Caption:='Катет прямоугольного треугольника= '+FloatToStr(a); end; //процедура для очистки полей формы для новых данных procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear; Label4.Caption:= ' ' end; procedure TForm1.Button3Click(Sender: TObject); begin Form1.Close end; end. Результаты работы программы 319 Задача Составить программу, определяющую сколько дней прожил пользователь программы. Компоненты Имя компонента Свойства компонента Значение Назначение Form1 Caption Сколько дней прожил поль- зователь программы Заголовок формы Label1 Caption WordWrap Программа подсчитывает, сколько дней прожил поль- зователь программы True Справочная ин- формация для пользователя программы Перенос не уме- стившихся слов на новую строку Label2 Caption Введите дату вашего рож- дения Подсказка поль- зователю Edit1 Text Поле для ввода даты рождения Label3 Caption Сегодня Подсказка поль- зователю Edit2 Text Поле, в которое выводится дата, установленная на компьютере Label4 Caption Поле для вывода результата 320 Button1 Caption ВЫЧИСЛИТЬ Кнопка вычисле- ния количества дней Button2 Caption ВЫХОД Кнопка прекра- щения выполне- ния программы и закрытия формы Button3 Caption ОЧИСТИТЬ Кнопка для очи- щения полей для ввода новых дан- ных Переменные Обозначение в про- грамме Содержание Тип USER_DAT Дата рождения пользо- вателя программы TDateTime USER_DAY Количество дней, прожи- тых пользователем про- граммы Длинный целый 321 Проект формы Текст модуля unit Unit1; ……………….. var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); Var USER_DAT:TDateTime; USER_DAY:INT64; begin Edit2.Text:=DateToStr(Date()); Label4.Caption:='ВЫ ПРОЖИЛИ '+ FloatToStr(DaySpan(Date(),StrToDate(Edit1.Text)))+' дней' end; procedure TForm1.Button2Click(Sender: TObject); begin Form1.Close end; procedure TForm1.Button3Click(Sender: TObject); begin Edit1.Clear; Label4.Caption:=' '; end; 322 end. Результаты работы программы Задача Составить программу для решения прямой и обратной геоде- зических задач. Прямая геодезическая задача состоит в том, что по координа- там одного конца А (X А , Y А ) линии АВ, по дирекционному углу этой линии α АВ и ее горизонтальному проложению S АВ вычисля- ют координаты другого конца В этой линии (X В , Y В ). X B =X A +S AB cos α АВ , Y B =Y A +S AB sin α АВ. Обратная геодезическая задача состоит в том, что по коорди- натам концов линии АВ вычисляют дирекционный угол и гори- зонтальное проложение этой линии. То есть известны X A , Y A , X B , Y B. Надо вычислить α АВ и S АВ A B A B AB X X Y Y tg − − = α , 2 2 ) ( ) ( A B A B AB Y Y X X S − + − = Компоненты Имя компонента Свойства компонента Значение Назначение Form1 Caption Прямая и обратная геоде- зические задачи Заголовок формы Label1 Caption Обратная геодезическая Справочная ин- 323 Visible задача — вычисление по координатам двух точек го- ризонтального проложения линии между ними и дирек- ционного угла False формация для пользователя программы Невидимый Label2 Caption Visible XA False Подсказка поль- зователю Невидимый Label3 Caption Visible YA False Подсказка поль- зователю Невидимый Label4 Caption Visible XB False Подсказка поль- зователю Невидимый Label5 Caption Visible YB False Подсказка поль- зователю Невидимый Label6 Caption Visible Горизонтальное проложе- ние линии АВ в метрах False Подсказка поль- зователю Невидимый Label7 Caption Visible False Поле для вывода горизонтального проложения Невидимый Label8 Caption Visible Дирекционный угол (гр. мин. сек.) False Подсказка поль- зователю Невидимый Label9 Caption Visible False Поле для вывода дирекционного угла (градусы) Невидимый Label10 Caption Visible False Поле для вывода дирекционного угла (минуты) Невидимый Label11 Caption Visible False Поле для вывода дирекционного угла (секунды) Невидимый Edit1 Text Visible ….. False Поле для ввода координаты XА Невидимый 324 Edit2 Text Visible ….. False Поле для ввода координаты YА Невидимый Edit3 Text Visible ….. False Поле для ввода координаты XB Невидимый Edit4 Text Visible ….. False Поле для ввода координаты YB Невидимый Button1 Caption ПРЯМАЯ ГЕОДЕЗИЧЕСКАЯ ЗАДАЧА Кнопка запускает на выполнение прямую геодези- ческую задачу Button2 Caption ОБРАТНАЯ ГЕОДЕЗИЧЕСКАЯ ЗАДАЧА Кнопка делает видимыми поля для решения об- ратной геодези- ческой задачи Button3 Caption ВЫХОД Кнопка закрытия формы и выхода из программы Button4 Caption Visible Вычислить False Кнопка вычисле- ния обратной геодезической задачи Невидимый Переменные Обозначение в про- грамме Содержание Тип XA Координата X точки А Вещественный YA Координата Y точки А Вещественный XB Координата X точки B Вещественный YB Координата Y точки B Вещественный G Часть дирекционного уг- ла линии АВ в градусах Целый M Часть дирекционного уг- ла линии АВ в минутах Целый S Часть дирекционного уг- ла линии АВ в секундах Вещественный L Горизонтальное проло- жение лини АВ Вещественный DX Приращение координат по оси X Вещественный DY Приращение координат по оси Y вещественный DU Дирекционный угол в градусах Вещественный Замечание 325 При проектировании компонентов для решения обратной геодезической задачи на той же форме свойство Visible компо- нентов целесообразно установить в положение False. Текст модуля unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math; { библиотечный модуль Math нужно добавить в стандартный набор модулей для подключения математической библиотеки } ……………………….. var Form1: TForm1; XA,YA:Extended; //координаты точки A XB,YB:Extended; // координаты точки B G:Integer; // дирекционный угол в градусах M: Integer; // часть дирекционного угла в минутах S:Real; // часть дирекционного угла в секундах L:Extended; // горизонтальное проложение линии AB DX, DY:Extended;// приращения координат по осям X,Y DU:Extended;// дирекционный угол в радианах implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Прямая геодезическая задача - определение координаты'+ ' точки по координатам исходной точки, горизонтальному проложению ' + ' и дирекционному углу.'+#13 +'Дирекционный угол задается в градусах, минутах и секундах. Коор-ты в метрах.'); // ввод координат исходной точки, дирекционного угла // и горизонтального проложения линии AB из окон ввода XA:=StrToFloat(InputBox('Прямая геодезическая задача', 'Введите координату X точки A','0')); YA:=StrToFloat(InputBox('Прямая геодезическая задача', 'Введите координату Y точки A','0')); G:=StrToInt(InputBox('Прямая геодезическая задача', 'Введите часть дирекционного угла линии AВ в градусах' +#13 +'Значение < 360','0')); M:=StrToInt(InputBox('Прямая геодезическая задача', 326 'Введите часть дирекционного угла линии AВ в минутах'+ #13+'Значение <60','0')); S:=StrToFloat(InputBox('Прямая геодезическая задача', 'Введите часть дирекционного угла линии AВ в секундах' +#13+'Значение <60','0')); L:=StrToFloat(InputBox('Прямая геодезическая задача', 'Введите горизонтальное проложение линии AВ в метрах','0')); // вычисление координат точки B // в ниже приведенном преобразовании можно использовать // функцию преобразования DegTORad XB:=XA+L*cos((g+m/60+s/3600)/180*pi); YB:=YA+L*sin((g+m/60+s/3600)/180*pi); {XB:=XA+L*cos(DegToRad(g+m/60+s/3600)); YB:=YA+L*sin(DegToRad (g+m/60+s/3600));} //округление вычисленных координат // до двух знаков после запятой XB:=Trunc(XB*100+0.5)/100; YB:=Trunc(YB*100+0.5)/100; // вывод координат точки B окно сообщения ShowMessage('Прямая геодезическая задача ' +#13 +'XB=' +FloatToStrF(XB,Fffixed,10,2)+ #13 + 'YB='+FloatToStrF(YB,Fffixed,10,2)) end; procedure TForm1.Button3Click(Sender: TObject); begin Form1.Close end; procedure TForm1.Button2Click(Sender: TObject); begin // сделать видимыми компоненты, относящиеся к обратной // геодезической задаче Label1.Visible:=True; Label2.Visible:=True; Label3.Visible:=True; Label4.Visible:=True; Label5.Visible:=True; Label6.Visible:=True; Label7.Visible:=True; Label8.Visible:=True; Label9.Visible:=True; Label10.Visible:=True; Label11.Visible:=True; Edit1.Visible:=True; 327 Edit2.Visible:=True; Edit3.Visible:=True; Edit4.Visible:=True; // перенести фокус в первое поле ввода на форме Edit1.SetFocus; Button4.Visible:=True; end; procedure TForm1.Button4Click(Sender: TObject); Var begin // ввод координат точек A и B из полей ввода на форме XA:=StrToFloat(Edit1.Text); YA:=StrToFloat(Edit2.Text); XB:=StrToFloat(Edit3.Text); YB:=StrToFloat(Edit4.Text); DX:=XB-XA; DY:=YB-YA; // вычисление горизонтального проложения линии AB L:=Sqrt(Sqr(DX)+Sqr(DY)); // округление горизонтального проложения // до двух знаков после запятой L:=Trunc(L*100+0.5)/100; // вычисление дирекционного угла и перевод // его значения из радиан в градусы DU:=ArcTan2(DY,DX)/Pi*180; {в данном преобразовании можно было использовать функцию RadToDeg: DU:= RadToDeg (ArcTan2(DY,DX));} // ArcTan2(Y/X) - библиотечная функция находит угол X/Y // в несущем квандарте по знакам X и Y от -Pi до Pi в радианах. // если угол со знаком минус к нему прибавляется 360 градусов if DU<0 Then DU:=360+DU; //выделение градусной части дирекционного угла G:=Trunc(DU); // выделение минутной части дирекционного угла M:=Trunc((DU-G)*60); // выделение секундной части дирекционного угла S:=((DU-G)*60-M)*60; {вывод горизонтального проложения и дирекционного угла в поля вы- вода} Label7.Caption:=FloatToStrF(L,Fffixed,10,2); Label9.Caption:=IntToStr(G); Label10.Caption:=IntToStr(M); Label11.Caption:=FloatToStrF(S,Fffixed,5,1); 328 end; end. Такие окна будут появляться на экране при выполнении проекта: 329 Задачи для самостоятельного решения Группа A № 2.1. Даны x, y, z. Составить программу для вычисления a, b по формулам: ). ( , 4 2 1 | | | 1 | ) 3 ( 2 2 3 + − + = + + − − = x e arctgz x b y x y x a № 2.2. Даны x, y, z. Составить программу для вычисления a, b по формулам: 3 | | 2 ) ( | | 1 , | | 1 3 3 2 2 1 x y x y x y b tgz y x e a y − + − + − + = − + + = − № 2.3. Даны x, y, z. Составить программу для вычисления a, b по формулам: 330 sin 2 / ) 2 cos( 1 , ) 4 /( 1 ) 4 /( ) 1 ( 2 4 2 2 2 z x y b x e x y x y a x + − + = + + + + + = − − № 2.4. Даны x, y, z. Составить программу для вычисления a, b по формулам: ). 2 1 ( , | 3 / | 2 3 2 2 z tg b x y x y x y a + = + + + = № 2.5. Даны x, y, z. Составить программу для вычисления a, b по формулам: 5 / 3 1 , sin 2 / 1 ) 6 / cos( 2 2 2 2 z z b y x a + + = + − = π № 2.6. Даны x, y, z. Составить программу для вычисления a, b по формулам: ). 1 ( cos , | ) 1 /( 2 | 2 ) ( sin 1 2 2 2 2 z arctg b x y x x x y x a = + + − + + + = № 2.7. Составить программу, подсчитывающую сколько дней ос- талось до каникул. № 2.8. Даны действительные числа δ и σ. Найти p(δ) по формуле: 2 2 2 2 1 ) ( σ δ π σ δ − = e p № 2.9. Составить программу, подсчитывающую количество сим- волов в полном имени пользователя программы, включая пробе- лы. № 2.10. Составить программу, определяющую, сколько лет про- жил пользователь программы. Группа Б № 2.11. Написать программу для решения прямой геодезической задачи: по заданным координатам точки А(X А , Y А ), горизонталь- ному проложению (L в м) от точки A до точки B и дирекционно- му углу ( α) этого проложения найти координаты точки B: α α sin cos ⋅ + = ⋅ + = L Y Y L X X A B A B 331 Угол вводить в градусах, минутах и секундах, координаты вводить с точностью до 1м. В программе предусмотреть следующие запросы при вводе исходных данных: XA =, YA = ПРОЛОЖЕНИЕ AB = ДИР. УГОЛ AB: G, M, S = Форма вывода результата: XB = значение XB YB = значение YB. Примечание Горизонтальное проложение — ортогональная проекция ли- нии местности на горизонтальную плоскость. Дирекционный угол — это горизонтальный угол, отсчитывае- мый от северного направления линии, параллельной оси абсцисс, по ходу часовой стрелки до направления данной линии. №2.12. Написать программу, которая по заданному значению вертикального угла ν и расстоянию S (в м) между точками A и B определяет превышение точки B над точкой A ν ⋅ = sin S R и горизонтальное проложение между A и B ν cos ⋅ = S D Значение R округлять до 0,01 м, значение D — до 0,1 м. ВЕРТИКАЛЬНЫЙ УГОЛ: G, M, S = РАССТОЯНИЕ = Форма вывода результатов: ПРЕВЫШЕНИЕ = значение R ГОР. ПРОЛОЖЕНИЕ = значение D (См. примечание к задаче 2.11). № 2.13. Написать программу для вычисления поправки дирекци- онного угла в сек. по значениям дирекционного угла α, расстоя- ния S в метрах и поправок координат концов отрезка y x y x , , , δ′′ δ′′ δ′ δ′ в метрах: )). ( cos ) ( (sin 206000 y x y x S δ δ α δ δ α δ α ′′ − ′′ ⋅ + ′ − ′ ⋅ = Поправку округлить до 0,01 сек. В программе предусмотреть следующие запросы при вводе исходных данных: 332 ДИР. УГОЛ: ГР., МИН., СЕК. = РАССТОЯНИЕ = ПОПРАВКИ КООРДИНАТ: DX1 = вводить x δ′ DY1 = вводить y δ′ DX2 = вводить x δ′′ DY2 = вводить y δ′′ Форма вывода результата: ПОПРАВКА ДИР. УГЛА= значение в сек. (См. примечание к задаче 2.11). № 2.14. Написать программу для вычисления площади треуголь- ного участка по длине стороны A и прилежащих к ней углов β и γ. Значения углов вводить в градусах, минутах и секундах, длину стороны A — в метрах. Площадь вывести в гектарах с точностью до 0,1 га. Формула для вычисления площади: В программе предусмотреть следующие запросы при вводе исходных данных: УГОЛ B: ГР., МИН., СЕК. = УГОЛ C: ГР., МИН., СЕК. = СТОРОНА A = Форма вывода результата: ПЛОЩАДЬ УЧАСТКА = значение S га. № 2.15. Написать программу для перевода декартовых координат (X,Y) некоторой точки в полярные ( ρ,Θ) при условии, что полюс совпадает с началом декартовой системы, а полярная ось совпа- дает с ось OX: 2 2 X Y arctg Y X = Θ + = ρ , Значение ρ округлять до 0,1 м. Значение Θ выводить в граду- сах, минутах и секундах, округляя секунды до 0,1. ) sin( 2 sin sin 2 γ β γ β + ⋅ ⋅ ⋅ = A S 333 В программе предусмотреть следующие запросы при вводе исходных данных: ДЕКАРТОВЫ КООРДИНАТЫ (X,Y) = Форма вывода результатов: ПОЛЯРНЫЕ КООРДИНАТЫ: УГОЛ (ГР., МИН., СЕК.) = значение РАССТОЯНИЕ = значение. №2.16 Написать программу для перевода координат точки M из полярной системы в декартову, считая, что полюс совпадает с на- чалом декартовых координат, а полярная ось совпадает с осью OX: sin , cos Θ = Θ = ρ ρ Y X Здесь ρ и Θ — координаты точки M в полярной системе, где Θ выражается в градусах, минутах и секундах. Значения X,Y при выводе округлить до 0,01 м. В программе предусмотреть следующие запросы при вводе исходных данных: ПОЛЯРНЫЕ КООРДИНАТЫ: УГОЛ (ГР., МИН., СЕК.) = РАССТОЯНИЕ (МЕТРЫ) = Форма вывода результатов: ДЕКАРТОВЫ КООРДИНАТЫ: X = значение X МЕТРОВ Y=значение Y МЕТРОВ. №2.17. Написать программу для вычисления коэффициента на- грузки лесной полосы (R) по заданному значению угла α, обра- зуемого осью лесной полосы и направлением ветра: )). 2 45 ( 1 )( 6 sin( α α − ° − ° + = tg R Значение α вводить в градусах и минутах. В программе предусмотреть следующие запросы при вводе: УГОЛ (ГР., МИН.) = Форма вывода результатов: КОЭФФИЦИЕНТ НАГРУЗКИ = значение R. № 2.18. Написать программу для вычисления площади треуголь- ного участка по длине стороны A и прилежащих к ней углов β и γ. Значения углов вводить в градусах, минутах и секундах, длину 334 стороны A — в метрах. Площадь вывести в гектарах с точностью до 0,1 га. Формула для вычисления площади: ) sin( 2 sin sin 2 γ β γ β + = A S В программе предусмотреть следующие запросы при вводе исходных данных: УГОЛ В: ГР., МИН., СЕК. = УГОЛ С: ГР., МИН., СЕК. = СТОРОНА А = Форма вывода результатов: ПЛОЩАДЬ УЧАСТКА = значение S га. № 2.19. Написать программу для определения угла (рис. 6.2) по заданным значениям X и S. Угол α определять в градусах, мину- тах и секундах, округлив секунды до 0,1 сек. α S Y 90 ° X Рис. 6.2 В программе предусмотреть запросы при вводе исходных данных: ГИПОТЕНУЗА = ПРОТИВОЛЕЖАЩИЙ КАТЕТ = Форма вывода результата: УГОЛ = количество гр., количество минут мин., количество секунд сек. № 2.20. Написать программу для определения угла α (рис.) по за- данным значениям Y и S. Угол определять в градусах, минутах и секундах, округляя секунды до 0,1. В программе предусмотреть запросы при вводе исходных данных: ГИПОТЕНУЗА = ПРИЛЕЖАЩИЙ КАТЕТ = |