Хорошо, поэтому я должен рассчитать, сколько времени пройдет, если я пойду со скоростью света с определенной скоростью и продолжительностью. Да, это домашнее задание. Я его выяснил по большей части, но когда я вхожу 40 на время и 60 лет, я получаю 0.008305, когда мне нужно получить 50. Что происходит?Не получить правильный ответ из уравнения. Кроме того, бесконечный цикл
Кроме того, цикл do while работает неправильно. Он повторяет весь блок кода независимо от того, как я отвечаю и игнорирую инструкции cout и cin, заставляя его давать мне ошибки при оценке v1. Как это исправить?
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <cmath>
const int c = 299792458;
int main()
{
int loopCheck = 'y';
do
{
int tm = 0;
std::cout << "Enter time of travel: " << std::endl;
std::cin >> tm;
if (tm < 0)
{
do
{
std::cout << "You have entered an incorrect value. "
<< "Please enter a value greater than 0."
<< std::endl;
std::cin >> tm;
} while (tm < 0);
}
double v1 = 0;
std::cout << "Enter velocity: " << std::endl;
std::cin >> v1;
if (v1 <= 0 || v1 >= 100)
{
do
{
std::cout << "You have entered an incorrect value. "
<< "Please enter a value between 0 and 100."
<< std::endl;
std::cin >> v1;
} while (v1 <= 0 || v1 >= 100);
}
double v2 = (v1/100) * c;
double ts = tm/(sqrt((1 - (v2 * v2))/(c * c)));
std::cout << v2 << " " << c << std::endl;
std::cout << std::fixed << std::setprecision(6) << ts
<< std::endl << std::endl;
std::cout << "Would you like to enter more data? (y/n)" << std::endl;
std::cin >> loopCheck;
} while (loopCheck == 'y');
_getch();
return 0;
}
gcc дает следующее предупреждение: a.cpp: 48: 52: warning: integer overflow в выражении [-Woverflow]. Это строка 'double ts = tm ... (c * c)));' –