Russian Qt Forum
Апрель 19, 2024, 23:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Задача о 2-х велосипедистах и электромобиле.  (Прочитано 1117 раз)
alexu007
Чайник
*
Offline Offline

Сообщений: 57


Просмотр профиля
« : Май 11, 2022, 15:14 »

Цитировать
Два велосипедиста выехали одновременно из пункта A по одной дороге с различными скоростями u и v метров в секунду. Через t секунд им вдогонку выехал электромобиль и через некоторое время обогнал одного, а затем и другого велосипедиста. При этом интервал между моментами обгона составил d секунд.

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

Формат входных данных
На вход через пробел подаются четыре натуральных числа: u, v, t, d. При этом u != v; u, v <= 50; t, d <= 10000. Гарантируется, что введенные данные будут таковы, что ответ не превысит 200.

Формат выходных данных
Программа должна вывести одно вещественное число — скорость электромобиля.

Методика проверки и пояснение к тесту
Ответ участника считается верным, если он отличается от ответа жюри не более чем на 10^-8.

Программа проверяется на 10 тестах. Прохождение каждого теста оценивается в 2 балла. При этом в первых пяти тестах ответ обязательно будет целым числом. Тест из условия задачи при проверке не используется.

Рассмотрим тест из примера. Утверждается, что для заданных параметров ответом является 12. Проверим это. Можно вычислить, что электромобиль, двигаясь со скоростью 12 м/с. догонит обгонит более медленного велосипедиста на расстоянии 480 метров, а более быстрого на расстоянии в 1200 метров. Действительно электромобиль преодолеет 480 и 1200 метров за 40 и 100 секунд соответственно. Таким образом, интервал между моментами обгона действительно равен 60. Велосипедисты до моментов обгона будут двигаться на 20 секунд дольше, по 60 и 120 секунд соответственно. И, проверив пройденное расстояние 60*8=480 и 120*10=1200, убедимся, что ответ верен. Обратите внимание, что это пояснение лишь показывает, как проверить правильность ответа, но не является алгоритмом решения.

Пример ввода:
10 8 20 60

Пример вывода:
12.0
Код:
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <qmath.h>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;

public slots:
    void press_pbtn_01();
};

#endif // WIDGET_H


Код:
#include "widget.h"
#include "ui_widget.h"



Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    QObject::connect(ui->pbtn_01,SIGNAL(clicked()),this,SLOT(press_pbtn_01()));
}



Widget::~Widget()
{
    delete ui;
}



void Widget::press_pbtn_01()
{
    QString str;

    str = ui->lineEdit_01->text();
    double u = str.toDouble();
    str = ui->lineEdit_02->text();
    double v = str.toDouble();
    str = ui->lineEdit_03->text();
    double t = str.toDouble();
    str = ui->lineEdit_04->text();
    double d = str.toDouble();

    double v_max = 200;
    double v_min = u;

    double x, s1, s2, vmash;

    while(qAbs(v_max - v_min) > 1e-12)
    {
        vmash = (v_max + v_min) / 2;

        s1 = vmash * (u * t) / (vmash - u);
        s2 = vmash * (v * t) / (vmash - v);

        x = qAbs(s1 - s2) / vmash;

        if(x < d) v_max = vmash;
        if(x > d) v_min = vmash;
    }

    ui->label_01->setText(QString::number(s1, 'g', 12));
    ui->label_02->setText(QString::number(s2, 'g', 12));
    ui->label_03->setText(QString::number(vmash, 'g', 12));
}
Записан
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« Ответ #1 : Май 11, 2022, 16:09 »

Такие задачи мы решали в 3-м классе. Смысл в программе какой? 3 поля на форму кинуть?
Записан
alexu007
Чайник
*
Offline Offline

Сообщений: 57


Просмотр профиля
« Ответ #2 : Май 11, 2022, 19:30 »

В третьем классе чего - школы?
У современных студентов даже такая задача вызывает затруднения...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.042 секунд. Запросов: 22.