Задать вопрос
@alan_07

Ошибка в коде с++, где ошибка?

Есть такой код:
#include <iostream> 
using namespace std;
int main() {
    int car1_start, car2_start, car1_speed, car2_speed, road_start, road_end;
    int moments = 0;
cin >> car1_start >> car2_start;
cin >> car1_speed >> car2_speed;
cin >> road_start >> road_end;
    int car1_position = car1_start;
    int car2_position = car2_start;
    while (car1_position < road_end && car2_position < road_end) {
 if (car1_position == car2_position) {
   moments++; }
        car1_position += car1_speed;
        car2_position += car2_speed;
        if (car1_position > car2_position) {
swap(car1_speed, car2_speed);
}}
cout << moments << endl;
    return 0;
}

при вводе
1 4
3 2
1 15
она должна выводить 2
Но программа выводит 1, какая ошибка в коде, помогите пожалуйста исправить
  • Вопрос задан
  • 155 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@slava25565
Ошибка не в коде, а в ходе выполнения задачи
По итогу, путь выполнения (позиций) у тебя такой:
0) Начало цикла, сравнение, 1 4, скорость та же
1) Начало цикла, сравнение, 4 6, скорость та же
2) Начало цикла, сравнение, 7 8, скорость та же
3) Начало цикла, сравнение, 10 10, скорость та же
4) Начало цикла, сравнение -
Тут впервые срабатывает а1 == а2 => момент = 1
- 13 12, скорость меняется
5) Начало цикла, 15 15, скорость та же
Новый цикл не начинается => сравнения не происходит => момент не меняется второй раз
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы