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

Задача вычисляющая расстояние которое пролетает камень. - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
lFreeManl
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 100
23.01.2012, 20:04     Задача вычисляющая расстояние которое пролетает камень. #1
Помогите разработать программу, вычисляющую расстояние, которое пролетит тело вдоль горизонтальной оси, брошенное в вакууме под углом α к горизонту с некоторой начальной скоростью Vo.Угол и начальная скорость вводятся пользователем из стандартного потока ввода. Угол задается в градусах, начальная скорость – в метрах в секунду. Ускорение свободного падения равно 9,8 м/с2.
Программа должна вычислять расстояние, непрерывно запрашивая величину угла и начальную скорость до тех пор, пока пользователь не введет слово exit.
Буду очень благодарен за помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2012, 20:04     Задача вычисляющая расстояние которое пролетает камень.
Посмотрите здесь:

Пролетает cin >> C++
C++ В чем подводный камень?
C++ [Задача]Найти в n-мерном пространстве минимальное расстояние от начала координат до отрезка , заданного координатами своих концов.
C++ Задача на рекурсию. Найти кратчайшее расстояние между городами i и j даже если между ними нет прямой дороги
Задача со строками (вывести слово, которое содержит ровно три буквы "и") C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Питекантроп
 Аватар для Питекантроп
246 / 140 / 6
Регистрация: 14.06.2010
Сообщений: 340
23.01.2012, 21:41     Задача вычисляющая расстояние которое пролетает камень. #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
43
44
45
46
47
48
49
50
51
52
53
#include "stdio.h"
#include "math.h"
#include <stdlib.h>
#include <string.h>
 
bool is_float(char * str)
{
    if (*str < '0' || *(str++) > '9') return false;
    bool sep = false;
    while (*str)
    {
        if (*str == '.')
        {
            if (sep) return false;
            sep = true;
        }
        else if (*str < '0' || *str > '9') return false;
        str++;
    }
    return true;
}
 
int main()
{
    char buf[200], buf2[30];
    
    double sp, angle;
    while (1)
    {
        while (1)
        {
            printf("Inpit speed, m/s\n");
            scanf("%s",buf);
            if (strcmp(buf,"exit") == 0) return 0;
            if (!is_float(buf) || (sp = atof(buf)) < 0) 
                printf("Invalid number.\n");
            else break;
        }
        
        while (1)
        {
            printf("\nInpit angle, deg\n");
            scanf("%s",buf);
            if (strcmp(buf,"exit") == 0) return 0;
            if (!is_float(buf) || (angle = atof(buf)) < 0 || angle > 90) 
                printf("Invalid number\n");
            else break;
        }
        printf("\nDistance: %f, m\n\n",
            sp * sp * sin(2 * angle / 180 * M_PI) / 9.81);
    }
    return 0;
}
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
23.01.2012, 22:06     Задача вычисляющая расстояние которое пролетает камень. #3
только нужно еще присвоить значение переменой PI, штоб, программа не закрывалась с ошибкой:
C++
1
2
3
4
5
6
7
int main()
{
        char buf[200], buf2[30];
        
        double sp,  angle;
        float M_PI = 3.1415926;
....
Питекантроп
 Аватар для Питекантроп
246 / 140 / 6
Регистрация: 14.06.2010
Сообщений: 340
23.01.2012, 22:08     Задача вычисляющая расстояние которое пролетает камень. #4
isaak, M_PI имеется в math.h
#define M_PI 3.14159265358979323846
-=ЮрА=-
Заблокирован
Автор FAQ
24.01.2012, 12:34     Задача вычисляющая расстояние которое пролетает камень. #5
Это скорее задача по физике нежели по программированию, краткие выкладки
http://www.cyberforum.ru/cgi-bin/latex.cgi?x(t) = {v}_{0}*cos(\alpha)*t
http://www.cyberforum.ru/cgi-bin/latex.cgi?y(t) = {v}_{0}*sin(\alpha)*t - \frac{g*{t}^{2}}{2}
Очевидно что если обозначить время полёта как Т, а длинну полёта как L, то
x(T) = L
y(T) = 0
Или же
http://www.cyberforum.ru/cgi-bin/latex.cgi?L = x(T) = {v}_{0}*cos(\alpha)*T
http://www.cyberforum.ru/cgi-bin/latex.cgi?0 = y(T) = {v}_{0}*sin(\alpha)*T - \frac{g*{T}^{2}}{2}
Подставим выражение для x(T) в y(T) получим
http://www.cyberforum.ru/cgi-bin/latex.cgi?0 = L*\frac{{v}_{0}*sin(\alpha)}{{v}_{0}*cos(\alpha)} - {L}^{2}*\frac{g}{2*{({v}_{0}*cos(\alpha))}^{2}}
Тут впору вспомнить геометрию
http://www.cyberforum.ru/cgi-bin/latex.cgi?tg(\alpha) = \frac{sin(\alpha)}{cos(\alpha)}
http://www.cyberforum.ru/cgi-bin/latex.cgi?1 + {tg(\alpha)}^{2} = \frac{1}{{cos(\alpha)}^{2}}
Я позволю себе опустить преобразования а сразу записать преобразованное выражение
http://www.cyberforum.ru/cgi-bin/latex.cgi?0 = L*tg(\alpha) - {L}^{2}*(1 + {tg(\alpha)}^{2})\frac{g}{2*{{v}_{0}}^{2}}

Последнее выражение имеет два корня
первый L = 0(он соответсвует начальному положению тела)
и второй - он то нам и нужен
http://www.cyberforum.ru/cgi-bin/latex.cgi?L = {v}_{0}*\frac{(1 + {tg(\alpha)}^{2})}{2*g*tg(\alpha)}

Последнее выражение можно ещё преобразовать(на основе всё тех же формул приведения из тригонметрии)
http://www.cyberforum.ru/cgi-bin/latex.cgi?L = {{v}_{0}}^{2}*\frac{(1 + {tg(\alpha)}^{2})}{2*g*tg(\alpha)} = {{v}_{0}}^{2}*\frac{\frac{1}{{cos(\alpha)}^{2}}}{2*g*\frac{sin(\alpha)}{cos(\alpha)}} = {{v}_{0}}^{2}*\frac{1}{g*sin(2*\alpha)}} = \frac{{v}_{0}}{\sqrt{g*sin(2*\alpha)}

Вот код на плюсах(как по мне лаконичней уже некуда)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    double v0, angle, L;
    double g = 9.81;
    double deg = asin(1.0)/90.0;//êîºôôèöèåГ*ГІ ïåðåâîäГ* ГЈГ°Г*äóñîâ Гў Г°Г*äèГ*Г*Г»
    while(true)//Âîò ГЄГ*ГЄ ГўГ» ГЁ õîòåëè ГЎГҐГ±ГЄГ®Г*ГҐГ·Г*ûé öèêë
        //êîòîðûé ïîçâîëèò äåëГ*ГІГј ââîä ïîñòîÿГ*Г*Г®
        //÷òîáû ïðåêðГ*ГІГЁГІГј Г°Г*áîòó ïðîñòî Г§Г*êðûâГ*ГҐГ¬ îêГ*Г® ГЄГ®Г*ñîëè
    {
        cout<<"Enter v0 : ";cin>>v0;
        //Óãîë ââîäèì Гў ГЈГ°Г*äóñГ*Гµ
        cout<<"Enter angle(int degrees) : ";cin>>angle;
        L = v0/sqrt(g*sin(2*angle*deg));
        cout<<"Length L : "<<L<<endl;
    }
    return 0;
}
Скрин отработки ниже
lFreeManl
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 100
24.01.2012, 12:45  [ТС]     Задача вычисляющая расстояние которое пролетает камень. #6
с бесконечным циклом я разобрался,а вот с проверкой на ввод exit немогу(

Добавлено через 6 минут
вот как я делал:
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
#include < iostream >  /*Включаем библиотеку, чтоб работали cout, cin*/
#include < cmath > /*Включаем библиотеку, чтоб работали математические операции*/
using namespace std;
bool prov(char* str)
{
        int symbols = 0;
        int digits = 0;
        
        while(*str !=0)
        {
                symbols++;
                if(isdigit(*str++))
                        digits++;
        }
        if(symbols==digits)
                return true;
        else
                return false;
}
int main()
{ double L,a,an,v,g=9.8,Pi=3.1415926535;
  char slovo[100];
 while (true)
{cout << "Vvedite skorost:" << endl;
    cin >> v;
    if (prov(slovo)) exit(0); 
    else goto M1; 
M1: 
    cout << "Vvedite ygol:" << endl;
     cin >> an;
     a=(an*Pi)/180;
 L=((pow(v,2)*sin(2*a))/g);
     cout << "Rasstoyanie="<< L<< endl;
    
     
     }
}
вылетает ошибка и закрывается
-=ЮрА=-
Заблокирован
Автор FAQ
24.01.2012, 12:48     Задача вычисляющая расстояние которое пролетает камень. #7
lFreeManl, я чуть накосил в формулах, вот правильная концовка и код
Начиная отсюда
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Последнее выражение имеет два корня
первый L = 0(он соответсвует начальному положению тела)
и второй - он то нам и нужен
http://www.cyberforum.ru/cgi-bin/latex.cgi?L = 2*{v}_{0}^{2}*\frac{(1 + {tg(\alpha)}^{2})}{g*tg(\alpha)}

Последнее выражение можно ещё преобразовать(на основе всё тех же формул приведения из тригонметрии)
http://www.cyberforum.ru/cgi-bin/latex.cgi?L = 2*{{v}_{0}}^{2}*\frac{(1 + {tg(\alpha)}^{2})}{g*tg(\alpha)} = 2*{{v}_{0}}^{2}*\frac{\frac{1}{{cos(\alpha)}^{2}}}{g*\frac{sin(\alpha)}{cos(\alpha)}} = 4*{{v}_{0}}^{2}*\frac{1}{g*sin(2*\alpha)} = \frac{4*{{v}_{0}}^{2}}{g*sin(2*\alpha)}

Код со скрином работы ниже
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    double v0, angle, L;
    double g = 9.81;
    double deg = asin(1.0)/90.0;//êîºôôèöèåГ*ГІ ïåðåâîäГ* ГЈГ°Г*äóñîâ Гў Г°Г*äèГ*Г*Г»
    while(true)//Âîò ГЄГ*ГЄ ГўГ» ГЁ õîòåëè ГЎГҐГ±ГЄГ®Г*ГҐГ·Г*ûé öèêë
        //êîòîðûé ïîçâîëèò äåëГ*ГІГј ââîä ïîñòîÿГ*Г*Г®
        //÷òîáû ïðåêðГ*ГІГЁГІГј Г°Г*áîòó ïðîñòî Г§Г*êðûâГ*ГҐГ¬ îêГ*Г® ГЄГ®Г*ñîëè
    {
        cout<<"Enter v0 : ";cin>>v0;
        //Óãîë ââîäèì Гў ГЈГ°Г*äóñГ*Гµ
        cout<<"Enter angle(int degrees) : ";cin>>angle;
        L = 4*v0*v0/g*sin(2*angle*deg);
        cout<<"Length L : "<<L<<endl;
    }
    return 0;
}
Миниатюры
Задача вычисляющая расстояние которое пролетает камень.  
-=ЮрА=-
Заблокирован
Автор FAQ
24.01.2012, 12:55     Задача вычисляющая расстояние которое пролетает камень. #8
lFreeManl, зачем эта функция, что ты хотел с её помощью реализовать???
Цитата Сообщение от lFreeManl Посмотреть сообщение
bool prov(char* str)
{
* * * * int symbols = 0;
* * * * int digits = 0;
while(*str !=0)
* * * * {
* * * * * * * * symbols++;
* * * * * * * * if(isdigit(*str++))
* * * * * * * * * * * * digits++;
* * * * }
* * * * if(symbols==digits)
* * * * * * * * return true;
* * * * else
* * * * * * * * return false;
}
Добавлено через 1 минуту
Зачем тебе разбирать строку на цифры и символы???Как я понимаю ошибку ввода хочешь парсить, ну разви это так делается???
lFreeManl
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 100
24.01.2012, 13:02  [ТС]     Задача вычисляющая расстояние которое пролетает камень. #9
суть в том,что если в поле ввода скорости ввести exit прога должна закрываться,вот я и пытался проверить так

Добавлено через 3 минуты
а как эт делается?
-=ЮрА=-
Заблокирован
Автор FAQ
24.01.2012, 13:06     Задача вычисляющая расстояние которое пролетает камень. #10
lFreeManl, пробуй такую проверку коректности ввода
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 <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    double v0, angle, L;
    double g = 9.81;
    double deg = asin(1.0)/90.0;//êîºôôèöèåГ*ГІ ïåðåâîäГ* ГЈГ°Г*äóñîâ Гў Г°Г*äèГ*Г*Г»
    while(true)//Âîò ГЄГ*ГЄ ГўГ» ГЁ õîòåëè ГЎГҐГ±ГЄГ®Г*ГҐГ·Г*ûé öèêë
        //êîòîðûé ïîçâîëèò äåëГ*ГІГј ââîä ïîñòîÿГ*Г*Г®
        //÷òîáû ïðåêðГ*ГІГЁГІГј Г°Г*áîòó ïðîñòî Г§Г*êðûâГ*ГҐГ¬ îêГ*Г® ГЄГ®Г*ñîëè
    {
        cin.sync();
        cout<<"Enter v0 : ";
        cin>>v0;
        if(cin.fail())
        {
            cin.clear();
            cout<<"Input error\n";
        }
        else
        {
            //Óãîë ââîäèì Гў ГЈГ°Г*äóñГ*Гµ
            cout<<"Enter angle(int degrees) : ";
            cin>>angle;
            if(cin.fail())
            {
                cin.clear();
                cout<<"Input error\n";
            }
            else
            {
                L = 4*v0*v0/g*sin(2*angle*deg);
                cout<<"Length L : "<<L<<endl;
            }
        }
    }
    return 0;
}
Миниатюры
Задача вычисляющая расстояние которое пролетает камень.  
-=ЮрА=-
Заблокирован
Автор FAQ
24.01.2012, 13:07     Задача вычисляющая расстояние которое пролетает камень. #11
Цитата Сообщение от lFreeManl Посмотреть сообщение
уть в том,что если в поле ввода скорости ввести exit прога должна
- аааа понял, сейчас сейчас..
lFreeManl
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 100
24.01.2012, 13:14  [ТС]     Задача вычисляющая расстояние которое пролетает камень. #12
большое спасибо,всё работает=)
-=ЮрА=-
Заблокирован
Автор FAQ
24.01.2012, 13:14     Задача вычисляющая расстояние которое пролетает камень. #13
Вот так выйдет при вводе exit(символы слово должны быть в нижнем регистре)
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
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
 
int main()
{
    char input[1024];
    bool bRepeate = true;
    double v0, angle, L;
    double g = 9.81;
    double deg = asin(1.0)/90.0;//êîºôôèöèåГ*ГІ ïåðåâîäГ* ГЈГ°Г*äóñîâ Гў Г°Г*äèГ*Г*Г»
    while(bRepeate)
    {
        cin.sync();
        cout<<"Enter v0 : ";
        cin.getline(input,1024);
        if(strcmp(input,"exit") == 0)
            bRepeate = false;
        else
            v0 = atof(input);
        if(bRepeate)
        {
            //Óãîë ââîäèì Гў ГЈГ°Г*äóñГ*Гµ
            cout<<"Enter angle(int degrees) : ";
            cin.getline(input,1024);
            if(strcmp(input,"exit") == 0)
                bRepeate = false;
            else
                angle = atof(input);
        }
        if(bRepeate)
        {
            L = 4*v0*v0/g*sin(2*angle*deg);
            cout<<"Length L : "<<L<<endl;
        }
    }
    return 0;
}
Миниатюры
Задача вычисляющая расстояние которое пролетает камень.  
lFreeManl
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 100
24.01.2012, 13:15  [ТС]     Задача вычисляющая расстояние которое пролетает камень. #14
выход я сделал сам)
C++
1
2
3
4
if(cin.fail())
      {
       exit(0);
      }
-=ЮрА=-
Заблокирован
Автор FAQ
24.01.2012, 13:17     Задача вычисляющая расстояние которое пролетает камень. #15

Не по теме:

Можно прикрутить и проверку этого

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
atof(input);
, но тогда алгоритм станет нечитабелен...



Добавлено через 48 секунд
Цитата Сообщение от lFreeManl Посмотреть сообщение
выход я сделал сам)
Код C++
1
2
3
4
if(cin.fail())
* * * {
* * * *exit(0);
* * * }
- нет это будет не по заданию смотри мой код в 13 м посте, там выйдет именно по слову exit
lFreeManl
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 100
24.01.2012, 13:17  [ТС]     Задача вычисляющая расстояние которое пролетает камень. #16
ааааа,ясно=)
-=ЮрА=-
Заблокирован
Автор FAQ
24.01.2012, 13:21     Задача вычисляющая расстояние которое пролетает камень. #17
Цитата Сообщение от lFreeManl Посмотреть сообщение
ааааа,ясно=)
ну т.е. если ті допустим не хотел выходить а введёшь случайно что то неверно(ну ляжет случайно рука на кейпад), то программа выйдет, а так выйдет именно по exit
lFreeManl
10 / 10 / 1
Регистрация: 27.11.2011
Сообщений: 100
24.01.2012, 13:28  [ТС]     Задача вычисляющая расстояние которое пролетает камень. #18
уже понял)ток что за такая функция bool bRepeate = true;что она делает?)
-=ЮрА=-
Заблокирован
Автор FAQ
24.01.2012, 13:44     Задача вычисляющая расстояние которое пролетает камень. #19
Цитата Сообщение от lFreeManl Посмотреть сообщение
ток что за такая функция bool bRepeate = true;что она делает?)
- да какая же это функция это переменная тип bool до тех пор пока не ввели exit цикл работает как только ввели exit значение переменной становится false
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(strcmp(input,"exit") == 0)
* * * * * * * * * * * * * * * * bRepeate = false;
и след итерацию цикл уже не отрабатывает

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(bRepeate)
* * * * {
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2012, 16:34     Задача вычисляющая расстояние которое пролетает камень.
Еще ссылки по теме:

Задача по физике (Определить силу притяжения между телами массы m1 и m2, расстояние между которыми r) C++
C++ пролетает gets в теле switch
Задача "Гигабашня": минимальное расстояние до этажа со счастливым номером C++

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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
 Аватар для Mr.X
2796 / 1572 / 246
Регистрация: 03.05.2010
Сообщений: 3,648
24.01.2012, 16:34     Задача вычисляющая расстояние которое пролетает камень. #20
После слов
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
и второй - он то нам и нужен
выражение для L неверно. 2 * tg(a) нужно записать в числителе, а (1 + tg^2(a)) - в знаменателе (и v0 там должно быть в квадрате). Именно поэтому результаты у вас не совпадают с вышеприведенными программами.

Добавлено через 9 минут
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/////////////////////////////////////////////////////////////////////////////////////////
//Разработать программу, вычисляющую расстояние, которое пролетит тело вдоль 
//горизонтальной оси, брошенное в вакууме под углом О± к горизонту с некоторой 
//начальной скоростью Vo.Угол и начальная скорость вводятся пользователем 
//из стандартного потока ввода. Угол задается в градусах, начальная скорость – 
//в метрах в секунду. Ускорение свободного падения равно 9,8 м/с2.
//Программа должна вычислять расстояние, непрерывно запрашивая величину угла 
//и начальную скорость до тех пор, пока пользователь не введет слово exit.
/////////////////////////////////////////////////////////////////////////////////////////
#define _USE_MATH_DEFINES
/////////////////////////////////////////////////////////////////////////////////////////
#include <cmath>
#include <iomanip>
#include <iostream>
#include <sstream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
typedef double          T_real;
/////////////////////////////////////////////////////////////////////////////////////////
bool  input_real
    (
        const T_str&    prompt,
        T_real&         real_val
    )
{
    std::cout << prompt;
    return (std::cin >> real_val) != 0;
}
/////////////////////////////////////////////////////////////////////////////////////////
T_real  get_horis_dist
    (
        T_real  alpha,
        T_real  initial_speed
    )
{
    const T_real    g                   =   9.81;
    const int       DEGREES_PER_PI      =   180;
    T_real          alpha_in_radians    =   alpha / DEGREES_PER_PI * M_PI;
 
    return          initial_speed 
                *   initial_speed 
                *   sin(2 * alpha_in_radians) / g;
}
/////////////////////////////////////////////////////////////////////////////////////////
bool  input_initial_speed(T_real&  initial_speed)
{
    const T_real        INITIAL_SPEED_MIN   = 0;    
    bool                good_input          = false;
    bool                value_is_correct    = false;
    std::ostringstream  sout;
    sout    << "Введите скорость >= "
            <<  INITIAL_SPEED_MIN
            <<  " (м/c):\t\t\t";
    do
    {
        good_input  =   input_real
                            (
                                sout.str(),
                                initial_speed                
                            );
 
        value_is_correct = INITIAL_SPEED_MIN <= initial_speed;
 
    }while(
                good_input
            &&  !value_is_correct
          );
 
    return  good_input;
}
/////////////////////////////////////////////////////////////////////////////////////////
bool  input_alpha(T_real&  alpha)
{
    const T_real        ALPHA_MIN           = 0;
    const T_real        ALPHA_MAX           = 180;
    bool                good_input          = false;
    bool                value_is_correct    = false;
    std::ostringstream  sout;
    sout    << "Введите угол в градусах из отрезка ["
            << ALPHA_MIN
            << ", " 
            << ALPHA_MAX
            << "]:\t";
 
    do
    {
        good_input  =   input_real
                            (
                                sout.str(),
                                alpha
                            );
 
        value_is_correct =      ALPHA_MIN   <=  alpha
                            &&  alpha       <=  ALPHA_MAX;
    }while(
                good_input
            &&  !value_is_correct
          );
 
    return  good_input;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    T_real  alpha           = 0;
    T_real  initial_speed   = 0;
 
    while(
                input_alpha             (alpha)
            &&  input_initial_speed     (initial_speed)  
         )
    {
        std::cout   <<  "Расстояние в метрах:\t\t\t\t"
                    <<  std::fixed
                    <<  std::setprecision(3)                    
                    <<  get_horis_dist
                            (
                                alpha,
                                initial_speed
                            )
                    
                    << std::endl                        
                    << std::endl                        
                    << std::endl                        
                    << std::endl;                        
    }
}
Yandex
Объявления
24.01.2012, 16:34     Задача вычисляющая расстояние которое пролетает камень.
Ответ Создать тему
Опции темы

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