Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
ALEX1223
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 48
1

Вычислить длину линии вертикального разреза фигуры

17.09.2018, 14:57. Просмотров 1581. Ответов 7

Задание: Составить алгоритм и написать код программы, вычисляющей длину линии верти-кального разреза фигуры y_razrez, значения площадей фигуры слева и справа от линии разреза s_left, s_right по значениям аргумента x, введенным с консоли:
Программа на C++:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <cmath>
#define m_pi 3.1415926535897932384626433832795
 
int main()
{
    double x, ax;
    double y_razrez, s_right, s_left;
    double full_s = m_pi*0.25;
 
    std::cout << "Input x: ";
    std::cin >> x;
    ax = fabs(x);
 
    if(ax > 1) 
    {
        std::cout << "No collision";
        system("pause");
        return 0;
    }
 
    y_razrez = sqrt( 1 - x*x ) - sqrt( 0.25 - (ax-0.5)*(ax-0.5) );
 
    s_right = 0.25*m_pi - 0.5*(asin(ax) + ax*sqrt(1-ax*ax)) 
        - ( m_pi/16. - 0.125 * ( asin(2*(ax-0.5)) + 2*(ax-0.5)*sqrt(1- 4*(ax-0.5)*(ax-0.5)))) ;
 
    if( x<0 )
    {
        s_left = s_right;
        s_right = full_s - s_left;
    } else {
        s_left =  full_s - s_right;
    }
 
    std::cout << "\n y_razrez = " << y_razrez;
    std::cout << "\n s_left = " << s_left;
    std::cout << "\n s_right = " << s_right;
    
    system("pause");
    return 0;
}
0
Миниатюры
Вычислить длину линии вертикального разреза фигуры  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2018, 14:57
Ответы с готовыми решениями:

Вычислить длину линии вертикального разреза фигуры, площади фигуры слева и справа от линии разреза
Составить алгоритм и написать код программы, вычисляющей длину линии вертикального разреза фигуры ...

Вычислить длину линии вертикального разреза фигуры
Задание : Составить алгоритм и написать код программы, вычисляющей длину линии вертикального...

Составить алгоритм, вычисляющей длину линии вертикального разреза фигуры (найти ошибку)
При x=1 и от x 1 до 2 считает правильно, а при значениях от 0 до 1 некорректные значения. ...

Написать код программы, вычисляющей длину линии вертикального разреза фигуры y_razrez
Составить алгоритм и написать код программы, вычисляющей длину линии вертикального разреза фигуры ...

Составить алгоритм и написать код программы, вычисляющей длину линии вертикального разреза фигуры
помогите с программой Вот условие: Составить алгоритм и написать код программы, вычисляющей длину...

7
Puporev
Модератор
56339 / 43119 / 29825
Регистрация: 18.05.2008
Сообщений: 102,473
17.09.2018, 15:28 2
В простой АВС или в АВС.net?
0
ALEX1223
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 48
17.09.2018, 15:34  [ТС] 3
Да, простите, забыл указать. ABC.net

Добавлено через 1 минуту
И вот картинка к заданию ещё, забыл во вложения добавить
0
ALEX1223
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 48
17.09.2018, 15:34  [ТС] 4
...
0
Миниатюры
Вычислить длину линии вертикального разреза фигуры  
xtro
229 / 30 / 17
Регистрация: 10.06.2016
Сообщений: 113
17.09.2018, 15:36 5
Лучший ответ Сообщение было отмечено ALEX1223 как решение

Решение

проверьте
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const m_pi=3.1415926535897932384626433832795;
var 
  x,ax:double;
  y_razrez, s_right, s_left:double;
  full_s:double:= m_pi*0.25; 
begin
  write('Input x:');readln(x);
  ax:=abs(x);
  if ax>1 then begin
    writeln('No collision');
    readln;
    exit;
  end; 
  y_razrez := sqrt( 1 - x*x ) - sqrt( 0.25 - (ax-0.5)*(ax-0.5) );
  s_right := 0.25*m_pi - 0.5*(arcsin(ax) + ax*sqrt(1-ax*ax)) 
             - ( m_pi/16.0 - 0.125 * ( arcsin(2*(ax-0.5)) + 2*(ax-0.5)*sqrt(1- 4*(ax-0.5)*(ax-0.5)))) ;   
  if x<0 then begin
    s_left := s_right;
    s_right := full_s - s_left;
   end else s_left := full_s - s_right;
 
  writeln('y_razrez = ',  y_razrez);
  writeln('s_left = ', s_left);
  writeln('s_right = ', s_right);
  readln;
end.
1
Puporev
Модератор
56339 / 43119 / 29825
Регистрация: 18.05.2008
Сообщений: 102,473
17.09.2018, 15:38 6
const m_pi не нужна, паскаль и сам знает чему равно pi.
0
ALEX1223
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 48
17.09.2018, 15:54  [ТС] 7
А разве y_razrez, s_left, s_right, x, не Real?

Добавлено через 6 минут
Правильно. Спасибо большое))
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
4597 / 2886 / 2247
Регистрация: 22.11.2013
Сообщений: 8,056
17.09.2018, 16:03 8
Лучший ответ Сообщение было отмечено ALEX1223 как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function ArcSin(x: Real): Real;
begin
  ArcSin:=ArcTan(x/SqRt(1-Sqr(x)))
end;
const full_s: Real = Pi/4;
var x, ax, y_razrez, s_right, s_left: Real;
begin
  Write('Input x: '); ReadLn(x);
  ax:=Abs(x);
  if ax>1 then begin
    WriteLn('Collision detected');
    Write('Press Enter...'); ReadLn;
    Halt;
  end;
  y_razrez:=SqRt(1-Sqr(x))-SqRt(0.25-Sqr(ax-0.5));
  s_right:=0.25*Pi-0.5*(ArcSin(ax)+ax*SqRt(1-Sqr(ax))
    -(Pi/16-0.125*(ArcSin(2*(ax-0.5))+2*(ax-0.5)*SqRt(1-4*Sqr(ax-0.5)))));
  if x<0 then begin
    s_left:=s_right;
    s_right:=full_s-s_left;
  end else
    s_left:=full_s-s_right;
  WriteLn('y_razrez = ',y_razrez);
  WriteLn('  s_left = ',s_left);
  WriteLn(' s_right = ',s_right);
  Write('Press Enter...'); ReadLn;
end.
PS. Писалось, когда тема была в PascalABC, без .NET.
1
17.09.2018, 16:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2018, 16:03

Длина линии вертикального разреза фигуры
Здравствуйте, помогите пожалуйста разобраться: Необходимо составить алгоритм и написать код...

Расчет площади слева и справа от линии разреза
необходимо рассчитать площадь слева и справа от линии разреза вот наработки (площадь считается...

Вычислить длину L ломанной линии
В квадрат со стороной l случайным образом одна за другой вбрасываются 100 точек и последовательно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru