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

Ссылка скопирована
C#
1 ответ

Есть такой код:

#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 машины на одном клетке до конца дороги и выводит их количество(по крайней мере должна быть такой программой)

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

    • спасибо большое, я исправил
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Артём Dev Ответ

    Для того чтобы найти ошибку в коде на языке программирования 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;
    }

    #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;
    }

    #include int main() { int x = 5; int y = 10; int z = x - y; // Исправлено на правильный оператор для сложения std::cout << "Сумма x и y: " << z << std::endl; return 0; }

    Таким образом, внимательный анализ кода и исправление выявленных ошибок поможет вам исправить проблему в вашем коде на C++.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно