1
#include <iostream>
#include <cmath>
using namespace std;
int main() {
    long int t, a, v0;
    double s;
    setlocale(LC_ALL, "RUS");
    cout << "Введите время:";
    cin >> t;
    cout << "Введите ускорение:";
    cin >> a;
    cout << "Введите скорость:";
    cin >> v0;
    s = v0*t + (a * pow(t,2)) / 2.0;
    cout <<"расстояние равно: " << s;
    return 0;
}

Предупреждение C26451 Арифметическое переполнение: использование оператора "*" на байтовом значении 4 и приведение результата к байтовому значению 8. Приведите значение к более широкому типу перед вызовом оператора "*", чтобы избежать переполнения (io.2).

vover
  • 1
  • 4

1 Answers1

2

Как видим, компилируется все нормально - https://ideone.com/Gp262Z

Но вот проблемы имеются. Почему все физические величины целые?

long int t, a, v0;

Вот тут переполнение запросто может быть. Да и как вы будете считать для времени, скажем, в 3.5 секунды?

Так что меняйте эти переменные на double, да и от pow в таком простом вычислении надо избавляться.

double t, a, v0;

....

s = (v0 + a * t/2.)*t;

Harry
  • 221,325