Ошибка в коде с++, где ошибка?
Есть такой код:
#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; } |
#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, какая ошибка в коде, помогите пожалуйста исправить
Дополнительно:
Программа считает моменты когда 2 машины на одном клетке до конца дороги и выводит их количество(по крайней мере должна быть такой программой)
Ошибка не в коде, а в ходе выполнения задачи
По итогу, путь выполнения (позиций) у тебя такой:
0) Начало цикла, сравнение, 1 4, скорость та же
1) Начало цикла, сравнение, 4 6, скорость та же
2) Начало цикла, сравнение, 7 8, скорость та же
3) Начало цикла, сравнение, 10 10, скорость та же
4) Начало цикла, сравнение -
Тут впервые срабатывает а1 == а2 => момент = 1
- 13 12, скорость меняется
5) Начало цикла, 15 15, скорость та же
Новый цикл не начинается => сравнения не происходит => момент не меняется второй раз
- спасибо большое, я исправил
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы найти ошибку в коде на языке программирования C++, необходимо внимательно проанализировать код и найти место, где программа не ведет себя ожидаемым образом.
Вот некоторые общие причины ошибок в коде на C++ и как их можно исправить:
1. Отсутствие точки с запятой в конце оператора: в C++ каждый оператор должен завершаться точкой с запятой. Проверьте все строки кода, чтобы убедиться, что каждый оператор завершается правильно.
2. Неправильное использование скобок: иногда ошибки возникают из-за неправильного расположения скобок. Убедитесь, что все открывающие скобки имеют соответствующие закрывающие скобки.
3. Опечатки в названиях переменных или функций: если вы используете какие-то переменные или функции, убедитесь, что их названия написаны правильно и не содержат опечаток.
4. Неправильное использование операторов: иногда ошибки возникают из-за неправильного использования операторов. Проверьте все условия и операции, чтобы убедиться, что они используются правильно.
Пример исправления ошибки в коде на C++:
#include int main() { int x = 5; int y = 10; int z = x + y; // Ошибка: использование неверного оператора std::cout << "Сумма x и y: " << z << std::endl; return 0; }
В данном примере ошибка заключается в использовании неверного оператора для сложения переменных x и y. Вместо оператора "+" был использован оператор "-". После исправления код будет выглядеть следующим образом:
#include int main() { int x = 5; int y = 10; int z = x - y; // Исправлено на правильный оператор для сложения std::cout << "Сумма x и y: " << z << std::endl; return 0; }
Таким образом, внимательный анализ кода и исправление выявленных ошибок поможет вам исправить проблему в вашем коде на C++.