Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 30.09.2012, 17:32   #1 (permalink)
Natashka
Новичок
 
Регистрация: 30.09.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Решение геометрических задач в Паскале

Помогите пожалуйста решить задачку в ПАскль, не могла не че придумать((((
Составить алгоритм и написать код программы, вычисляющей длину линии вертикального разреза фигуры y_razrez, значения площадей фигуры слева и справа от линии разреза s_left, s_right, по значениям аргумента x, введенным с консоли:aacuiyiiue.jpg
Natashka вне форума   Ответить с цитированием

Старый 30.09.2012, 17:32
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Посмотрите, в данных обсуждениях может находиться нужная информация

Решение нелинейного уравнения на Паскале
Десять задач в Паскале
Общее решение
Помогите в решение задач по электронике
Решение задачи в паскале

Старый 01.10.2012, 19:09   #2 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Площадь фигуры вычисляется по следующим условиям:
Полная площадь фигуры фактически будет равна 0,5*Pi
Площадь в первой четверти будет равна 0,25*Pi-0,125*Pi=0,125*Pi
Площадь во второй четверти будет равна 0,25*Pi
Площадь в третьей четверти будет равна 0,125*Pi
Теперь определите координаты точек пересечения прямой, заданной функцией f(x)=x и окружностей x[sup]2[/sup]+y[sup]2[/sup]=1 и x[sup]2[/sup]+y[sup]2[/sup]=0,25. Особо интересуют значения координаты Y. Длину отрезка вычислите по формуле |Y1-Y2|.
Теперь остается воспользоваться формулой вычисления площади сектора, учитывая, что используется не полный круг, а половина.

Удачи в вычислениях
AlexZir вне форума   Ответить с цитированием
Старый 04.10.2012, 03:25   #3 (permalink)
Natashka
Новичок
 
Регистрация: 30.09.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

не могли бы вы написать код программы я уже как только не побовала
Natashka вне форума   Ответить с цитированием
Старый 04.10.2012, 09:27   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Natashka Посмотреть сообщение
не могли бы вы написать код программы я уже как только не побовала
Да легко. Только вот когда время будет - возможно, не раньше выходных. Писанины много.
Vladimir_S вне форума   Ответить с цитированием
Старый 06.10.2012, 18:04   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну вот, добил. В нумерации функций индексы 1, 2 и 3 относятся к верхней большой полуокружности, левой малой и правой малой, соответственно.
Код:
Var
 X,Y_razrez,S_left,S_right:real;

Function ArcCos(Xac:real):real;
begin
 if Xac=1 then ArcCos:=0 else
 if Xac=-1 then ArcCos:=Pi else
 ArcCos:=(Pi/2)-ArcTan(Xac/SQRT(1-Xac*Xac));
end;

Function Y1(x1:real):real;
begin
 Y1:=Sqrt(1-Sqr(x1));
end;

Function Y2(x2:real):real;
begin
 Y2:=-Sqrt(0.25-Sqr(x2+0.5));
end;

Function Y3(x3:real):real;
begin
 Y3:=Sqrt(0.25-Sqr(x3-0.5));
end;

Function Segm1_right(x1:real):real;
Var
 alph:real;
begin
 alph:=ArcCos(x1);
 Segm1_right:=alph/2-Y1(x1)*x1/2;
end;

Function Segm1_left(x1:real):real;
begin
 Segm1_left:=Pi/2-Segm1_right(x1);
end;

Function Segm2_right(x2:real):real;
Var
 alph:real;
begin
 alph:=ArcCos((0.5+x2)/0.5);
 Segm2_right:=alph*0.125+Y2(x2)*(0.5+x2)/2;
end;

Function Segm2_left(x2:real):real;
begin
 Segm2_left:=Pi*0.125-Segm2_right(x2);
end;

Function Segm3_right(x3:real):real;
Var
 alph:real;
begin
 alph:=ArcCos((x3-0.5)/0.5);
 Segm3_right:=alph*0.125-Y3(x3)*(x3-0.5)/2;
end;

Function Segm3_left(x3:real):real;
begin
 Segm3_left:=Pi*0.125-Segm3_right(x3);
end;

Begin
 Repeat
  Write('Enter X (X<-1 or X>1 to quit): ');
  Readln(X);
  If (X>=-1) and (X<=1) then
   begin
    if X=0 then
     begin
      Y_razrez:=1;
      S_left:=Pi*0.375;
      S_right:=Pi*0.125;
     end
    else
    if X<0 then
     begin
      Y_razrez:=Y1(X)-Y2(X);
      S_left:=Segm1_left(X)+Segm2_left(X);
      S_right:=Segm1_right(X)+Segm2_right(X)-Pi*0.125;
     end
    else
     begin
      Y_razrez:=Y1(X)-Y3(X);
      S_left:=Segm1_left(X)-Segm3_left(X)+Pi*0.125;
      S_right:=Segm1_right(X)-Segm3_right(X);
     end;
    Writeln('Y_razrez= ',Y_razrez:0:5);
    Writeln('S_left= ',S_left:0:5);
    Writeln('S_right= ',S_right:0:5);
   end;
 Until (X<-1) or (X>1);
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 14:47.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.