Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для Jesterru
3 / 2 / 2
Регистрация: 19.06.2016
Сообщений: 299

Почему не срабатывает оператор if?

21.07.2017, 15:59. Показов 957. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Из-за интереса к физике я решил сделать программу, чтобы вручную не считать по формулам. На мое удивление программа вышла вполне годная, без багов. Но....
В программе задается скорость, которую надо достичь. Есть оператор if, который проверяет, что если текущая скорость равна или больше, чем надо было достичь, то тогда происходит выход из цикла.
Сам код программы (Программа консольная) :
Кликните здесь для просмотра всего текста
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
                Console.Clear();
                Console.WriteLine("Разгон ракеты до Х скорости (Все дробные числа пишутся через ",")");
                Console.WriteLine("Масса покоя (КГ) :");
                double _MassStart = Convert.ToDouble(Console.ReadLine());
                Console.Clear();
 
                Console.WriteLine("Разгон ракеты до Х скорости (Все дробные числа пишутся через ",")");
                Console.WriteLine("Масса покоя : {0:N} КГ", _MassStart);
                Console.WriteLine("Мощность двигателя (Н) :");
                double _Eng = Convert.ToDouble(Console.ReadLine());
                Console.Clear();
 
                Console.WriteLine("Разгон ракеты до Х скорости (Все дробные числа пишутся через ",")");
                Console.WriteLine("Масса покоя : {0:N} КГ", _MassStart);
                Console.WriteLine("Мощность двигателя : {0:N} Н", _Eng);
                Console.WriteLine("Требуемая скорость (М/С) (Скорость света - 299 792 458 М/С) :");
                double _SpeedFinish = Convert.ToDouble(Console.ReadLine());
                Console.Clear();
 
                Console.WriteLine("Разгон ракеты до скорости {0} М/С", _SpeedFinish);
                Console.WriteLine("Масса корабля - {0} КГ", _MassStart);
                Console.WriteLine("Мощность двигателя - {0} Н", _Eng);
                Console.WriteLine("========================================");
                Console.ReadKey();
 
                double _MassNow = _MassStart;
                double _VelNow = 0;
                double _C = 299792458;
                double _Time = 0;
 
                while (true)
                {
                    for (int i = 0; i < Math.Pow(_Eng, 2); i++)
                    {
                        double _Force = (_Eng / Math.Pow(_Eng, 2)) / _MassNow;
                        _VelNow = _VelNow + _Force;
                        _MassNow = _MassStart / (Math.Sqrt(1 - (Math.Pow(_VelNow, 2) / Math.Pow(_C, 2))));
                        _Time = _Time + (1 / Math.Pow(_Eng, 2));
 
                        Console.WriteLine("Масса - {0:F8} КГ | Скорость - {1:F8} М/С | Время - {2:F4} Секунд", _MassNow, _VelNow, _Time);
 
                        if (_VelNow >= _SpeedFinish)
                        {
                            break;
                        }
                    }
                    if (_VelNow >= _SpeedFinish)
                    {
                        break;
                    }
                }
                Console.WriteLine("========================================");
                Console.WriteLine("Разгон ракеты до скорости {0} М/С", _SpeedFinish);
                Console.WriteLine("Масса корабля - {0} КГ", _MassStart);
                Console.WriteLine("Мощность двигателя - {0} Н", _Eng);
                Console.ReadKey();

И так же прикреплен скрин того, чего я не могу понять (На скрине надо обратить внимание на колонку со скоростью).
Спасибо тем, кто подсказал или помог исправить данную проблему
Миниатюры
Почему не срабатывает оператор if?  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.07.2017, 15:59
Ответы с готовыми решениями:

Почему не срабатывает оператор отключения ошибок?
День добрый! Пробую вставлять @, чтобы не выводились ошибки. Но получаю Parse error: syntax error, unexpected... В чём проблема?

Не срабатывает оператор Else
На кнопке фоновое изображение , при нажатии - картинка меняется ( в данном случае &quot;&quot;стрелка вниз - стрелка вверх&quot;&quot;)....

Не срабатывает оператор
program primer_; var a,b,c,s,k : integer; y:real; begin writeln('Введите трёхзначное число:'); readln(k); if (k&lt;100) and...

1
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
21.07.2017, 16:12
Jesterru, так всё работает как нужно, т.к по Вашему алгоритму вы сначала считаете и записываете данные в консоль, а только после этого проверяете полученную скорость с максимальной

Добавлено через 2 минуты
Если Вам такое поведение не нужно то переместите условие проверки скорости сразу после высчитывания текущей скорости (после 36 строки)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.07.2017, 16:12
Помогаю со студенческими работами здесь

не срабатывает оператор
void move(int &amp;i,int &amp;j,int &amp;step,char &amp;n) { cout&lt;&lt;&quot;введите направление &quot;; n=cin.get(); cout&lt;&lt;&quot;введите шаг&quot;&lt;&lt;endl; ...

ООП, заполнение 0-ми вместо от 0 до 10, оператор + (перегрузка) не срабатывает
Не правильно работает заполнение матрицы, заполняется только 0-ми. Не срабатывает оператор + Помогите разобраться и научиться.... ...

Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->?
#include &lt;iostream&gt; using namespace std; class random { public: void Set(int b){a=b;} int Get(){return a;} private: ...

Почему не срабатывает?
Почему следующий код работает: &lt;?php if (($_SERVER !== '/') || ($_SERVER !== '/index.php')): ?&gt; &lt;style type=&quot;text/css&quot;&gt; ...

Почему срабатывает for?
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; long int fact ( int N ) { int f, i; for ( i=1, f=1 ; i &lt;= N ; i++ ) f*=i; return...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru