Форум программистов, компьютерный форум CyberForum.ru

Определение положения камня - C++

Восстановить пароль Регистрация
 
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
28.08.2012, 17:24     Определение положения камня #1
Всем доброго время суток. Написать программу, которой по введенному пользователем времени t определяется положение камня (высота от дна обрыва x(t) и расстояние до края обрыва y(t)). Предусмотреть случай, когда камень упал на дно обрыва (использовать тернарный оператор). Уравнение движения камня имеют вид:
вдоль горизонтальной оси
http://www.cyberforum.ru/cgi-bin/latex.cgi?x(t)= V*t*\cos (\alpha )
вдоль направления вверх вертикальной оси
http://www.cyberforum.ru/cgi-bin/latex.cgi?y(t) = H + V*T*\sin (\alpha )-\frac{g*{t}^{2}}{2} (координата отсчитывается от дна обрыва). Время полета T определяется условием y(T) = 0, то есть
http://www.cyberforum.ru/cgi-bin/latex.cgi?H + V*T*\sin (\alpha )-\frac{g*{T}^{2}}{2}= 0
откуда получаем
http://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
T=(1+\sqrt{1+\frac{2*g*H}{{V}^{2}*{(\sin(\alpha )) }^{2}}})\frac{V*\sin(\alpha ) }{g}<br />
Вот сам код программы:
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
#include <iostream>
#include <cmath>
#include <locale>
using namespace std;
int main ()
{
int n;
double  V, alpha, t, H;
double x, y, T;
const double g = 9.8;
const double Pi = 3.1416;
setlocale( LC_ALL,"Russian" );
cout<<"V = "; cin>>V;
cout<<"H = "; cin>>H;
cout<<"alpha = "; cin>>alpha;
cout<<"t = "; cin>>t;
T = (1 + sqrt (1 +  ((2*H*g)/(V*V*sin (alpha*Pi/180)*sin (alpha*Pi/180)))))*(V*sin (alpha*Pi/180)/g);
n = (int)t/T;
n%2?T-(t-n*T):t-n*T;
x = V*t*cos (alpha*Pi/180);
y = H + V*t*sin (alpha*Pi/180) - (g*t*t/2);
if( V*sin (alpha*Pi/180) != 0 && H > 0  )
    
{
cout << "Высота от дна обрыва x равно:  " << x <<endl;
cout << "Значение скорости равно: " << y <<endl;
   }
    
else 
{
cout << "Решений не существует!" << endl;
 
  } 
      
  
system("pause");
return 0;
}
Уважаемые программисты проверьте пожалуйста правильность данного кода на выполнения следующих условий: http://www.cyberforum.ru/cgi-bin/latex.cgi?V*sin (\alpha )\neq 0 и H > 0. Как предусмотреть случай, когда камень упал на дно обрыва (использовать тернарный оператор)????
Заранее вам огромное спасибо.

Добавлено через 2 часа 11 минут
Скажите пожалуйста правильно ли работает программа???? Особенно выполняется ли условие:предусмотреть случай, когда камень упал на дно обрыва (использовать тернарный оператор)???? Заранее вам огромное спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
28.08.2012, 19:10     Определение положения камня #2
Программы оформляйте примерно вот так
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
42
#include <iostream>
#include <cmath>
#include <locale>
using namespace std;
int main ()
{
    double  V, alpha, t, H;
    double x, y, T;
    const double g = 9.8;
    const double Pi = 3.1416;
    setlocale( LC_ALL,"Russian" );
    cout<<"V = "; cin>>V;
    cout<<"H = "; cin>>H;
    if(H<=0) // контроль введенных данных
    {
        cout<<"Высота обрыва не может быть отрицательной\n";
        system("pause");
        return 1;
    }
    cout<<"t = "; cin>>t;
    if(t<=0) // контроль введенных данных
    {
        cout<<"Время не может быть отрицательным\n";
        system("pause");
        return 1;
    }
    cout<<"alpha = "; cin>>alpha;
    alpha*=Pi/180.;// промежуточные вычисления делаем заранее
 
    double k1=V*sin(alpha)/g;// упрощаем вычисления
    T=k1+sqrt(k1*k1+2.*g*H);
    if(t<T)
    {
        x = V*t*cos(alpha);
        y = H + V*t*sin(alpha) - g*t*t/2.;
        cout << "горизонтальное расстояние x равно:  " << x <<endl;
        cout << "расстояние до дна равно: " << y <<endl;
    }else 
        cout << "Камень упал на дно!" << endl;
    system("pause");
    return 0;
}
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
28.08.2012, 22:32  [ТС]     Определение положения камня #3
А где здесь используется тернарный оператор????
-=ЮрА=-
Заблокирован
Автор FAQ
29.08.2012, 11:59     Определение положения камня #4
isaak, лови
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
#include <cmath>
#include <iostream>
using namespace std;
 
double g = 9.81;
double x(double v, double alpha, double t);
double y(double v, double alpha, double t, double h);
 
int main()
{
    double V;
    double H;
    double T;
    double alpha;
    cout<<"V = ";cin>>V;
    cout<<"H = ";cin>>H;
    cout<<"T = ";cin>>T;
    cout<<"a(in deg) = ";cin>>alpha;
    alpha *= asin(1.0)/90; //Перевели в радианы
    double X = x(V, alpha, T);
    double Y = y(V, alpha, T, H);
    cout<<"Distance from border of fall : "<<X<<endl;
        (0 < Y) //Тернарник проверки упал камень или нет
        ? 
        cout<<"height from bottom : "<<Y
        : 
        cout<<"rock is fall on bottom";
    cout<<endl;
    return 0;
}
 
double x(double v, double alpha, double t)
{
    return v*cos(alpha)*t;
}
 
double y(double v, double alpha, double t, double h)
{
    return h + v*sin(alpha)*t - g*t*t/2;
}
PS:Кто тут из модеров отвечает за скрипты и прочее - подпаяйте загрузчик скрины вообще не аттачаться!
Управление вложениями
Ошибки загрузки
Fall.PNG:
Этот файл не является изображением.
Fly.PNG:
Этот файл не является изображением.
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
29.08.2012, 14:01  [ТС]     Определение положения камня #5
-=ЮрА=- огромное спасибо!!!!

Добавлено через 1 час 27 минут
-=ЮрА=- еще один вопрос остался, а где используешь определение http://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
T=(1+\sqrt{1+\frac{2*g*H}{{V}^{2}*{(\sin(\alpha )) }^{2}}})\frac{V*\sin(\alpha ) }{g}<br />
???? Заранее огромное спасибо!!!!
-=ЮрА=-
29.08.2012, 14:15
  #6

Не по теме:

isaak, то формула для определения времени до падения камня на дно ущелья и к вопросу

Цитата Сообщение от isaak Посмотреть сообщение
аписать программу, которой по введенному пользователем времени t определяется положение камня (высота от дна обрыва x(t) и расстояние до края обрыва y(t)). Предусмотреть случай, когда камень упал на дно обрыва (использовать тернарный оператор).
она не имеет никакого отношения. (возможно след задача в том учебнике будет на определение времени полёта, поэтому и эту формулу автор учебника тоже привёл)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2012, 14:47     Определение положения камня
Еще ссылки по теме:

Расстояние до положения курсора C++
C++ Решение физической задачи: рассчитать полет камня, брошенного под углом к горизонту
Вставка (с указанием положения) и удаление элемента в vector C++

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

Или воспользуйтесь поиском по форуму:
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
29.08.2012, 14:47  [ТС]     Определение положения камня #7
zss у вас ошибка
Цитата Сообщение от zss Посмотреть сообщение
C++
1
    T=k1+sqrt(k1*k1+2.*g*H);
должно получиться так:
C++
1
T=k1+sqrt(k1*k1+2.*H/g);
Yandex
Объявления
29.08.2012, 14:47     Определение положения камня
Ответ Создать тему
Опции темы

Текущее время: 01:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru