11.03.2014, 11:37 | #1 (permalink) |
Member
Регистрация: 02.03.2014
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Турбо Паскаль. Тип запись
задание: Создать записи определяющие положение точки в декартовой и в полярной системах координат. Описать процедуру, преобразующую координаты точки на плоскости из декартовой в полярные |
11.03.2014, 11:37 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Очень важно прочитать похожие темы Помогите составить программу на турбо паскаль Турбо Паскаль. Рекурсии |
11.03.2014, 12:18 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Type Cartez=Record x,y:real; end; Polar=Record R,fi:real; end; Function Cart2Pol(Cr:Cartez):Polar; begin Cart2Pol.R:=SQRT(SQR(Cr.x)+SQR(Cr.y)); with Cr do if (x>0) and (y>=0) then Cart2Pol.fi:=Arctan(y/x) else if (x=0) and (y>0) then Cart2Pol.fi:=Pi/2 else if (x<0) and (y>=0) then Cart2Pol.fi:=Pi+Arctan(y/x) else if (x<0) and (y<0) then Cart2Pol.fi:=-Pi+Arctan(y/x) else if (x=0) and (y<0) then Cart2Pol.fi:=-Pi/2 else if (x>0) and (y<0) then Cart2Pol.fi:=Arctan(y/x) else Cart2Pol.fi:=10; end; Var C:Cartez; Begin Write('x= '); Readln(C.x); Write('y= '); Readln(C.y); Writeln('R= ',Cart2Pol(C).R:0:2); if Cart2Pol(C).fi=10 then Writeln('Fi: not determined') else Writeln('Fi= ',Cart2Pol(C).fi/Pi*180:0:2,' deg.'); Readln End. |
|
11.03.2014, 20:29 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Попробуйте такой вариант:
Код:
Type Cartez=Record x,y:real; end; Polar=Record R,fi:real; end; Procedure Cart2Pol(Cr:Cartez; var Pl:Polar); begin Pl.R:=SQRT(SQR(Cr.x)+SQR(Cr.y)); with Cr do if (x>0) and (y>=0) then Pl.fi:=Arctan(y/x) else if (x=0) and (y>0) then Pl.fi:=Pi/2 else if (x<0) and (y>=0) then Pl.fi:=Pi+Arctan(y/x) else if (x<0) and (y<0) then Pl.fi:=-Pi+Arctan(y/x) else if (x=0) and (y<0) then Pl.fi:=-Pi/2 else if (x>0) and (y<0) then Pl.fi:=Arctan(y/x) else Pl.fi:=10; end; Var C:Cartez; P:Polar; Begin Write('x= '); Readln(C.x); Write('y= '); Readln(C.y); Cart2Pol(C,P); Writeln('R= ',P.R:0:2); if P.fi=10 then Writeln('Fi: not determined') else Writeln('Fi= ',P.fi/Pi*180:0:2,' deg.'); Readln End. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
11.03.2014, 20:56 | #8 (permalink) |
Member
Регистрация: 02.03.2014
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
я все равно до конца не понимаю, что происходит в программе. если Вам не тяжело, вы можете мне объяснить структуру программы и где осуществился перевод? Пожалуйста.
|
11.03.2014, 21:05 | #9 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Света, а скажите честно: Вы представляете себе вообще что такое полярная система координат? Может быть, нужно объяснить?
|
11.03.2014, 21:17 | #10 (permalink) |
Member
Регистрация: 02.03.2014
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
представляю. если декартова - оси х,у, то декартова представляет собой окружность (по ней в школе тригонометрию проходят). так?
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|