Вчера нечаянно зашел в эту тему... Уже я так понимаю что не в спеху, уже сроки сошли... но мало ли кому еще понадобится, да и для собственной практики решил решить задачку... в общем вот сама программа... Честно скажу голову поломал.. Может есть какие формулы специальные для рассчета, не знаю...все выводил сам...
//==================================================================
// ПРОГРАММА НАПИСАНА НА VISUAL STUDIO 2005.
//УСЛОВИЕ:
//Определить время, через которое встретятся два тела,равноускоренно движущиеся навстречу друг другу,
//если известны их начальные скорости, ускорения и начальное расстояние между ними.
//
// ПРИМЕР:
//
// 20 км/ч-> <-100 км/ч
// ||-X км------->|<------100 минус X км--||
// <---------Расстояние 100 км.------------>
// Ускорение я брал 10 км/ч.
//
// 1.Находим расстояние которое проехал 1-й водитель.
// X/20=(100-X)/100; => X*100=20*(100-X); => 100*X=2000-20*X; =>
// 120*X=2000; X=2000/120=16.67 км;
// 2.Каждую минуту (я выбрал интервал минута, для большей точности) скорость водителя будет увеличиваться
// на Ускорение(км/ч)/60 минут. И получается что каждую минуту он будет проезжать все большие и большие
// расстояния. И вот имея общее расстояние я просто считаю количество минут(каждый раз добавляя ускорение),
// тем самым нахожу расстояние пройденое за эту минуту, и отнимаю это расстояние от общего. Общее постоянно
// уменьшается, до тех пор пока не равно 0. Когда равно 0, значит мы в нужной точке. И у нас есть количество
// минут, которые мы просто переводим в часы......
//
// ICQ:221498093, ЕСЛИ ЧЕСТНО ПРИШЛОСЬ ПАРУ ЧАСИКОВ ПОЛОМАТЬ ГОЛОВУ НАД ТЕМ КАК С УСКОРЕНИЕМ РЕШИТЬ... САМА ЗАДАЧА
// ШКОЛЬНОГО УРОВНЯ КЛАССА 7-ГО +НЕМНОГО СЛОЖНЕЕ, НО ТОЛЬКО БЫЛА У МЕНЯ ТАКАЯ МАТЕМАТИКА ЛЕТ 8 НАЗАД.
//
// В ОБЩЕМ РЕШИЛ И БОГ С НЕЙ! ТЕСТИЛ, СЧИТАЛ НА БУМАЖКАХ, ВРОДЕ ВСЕ СХОДИЛОСЬ...СМОТРИТЕ САМИ КОМУ НАДА.
//====================================================================
#include"stdafx.h"
#include<iostream>
#include<conio.h>
using namespace std;
void main()
{
int hour,min,sec; //Объявления переменных.
float dist,mins,i,time,secs,x,speed1,speed2,uskor;
cout<<"Enter the distantion (km)>>";cin>>dist; //Ввод растояния.
cout<<"Enter the speed of the first driver (km/h)>>";cin>>speed1; //Ввод скорости первого водителя.
cout<<"Enter the speed of the second driver (km/h)>>";cin>>speed2; //Ввод скорости второго водителя.
cout<<"Enter the speed acceleration value (km/h)>>";cin>>uskor;
x=speed1*dist/(speed1+speed2); //Расстояние которое проехал первый.
float tempdist=x,uskorMin,tempdist2; //Объявляю переменные для расчета времени.
uskorMin=uskor/60; //Перевожу ускорение в минуты, для большей точности.
//потому что вдруг они встретятся раньше чем через час...
for(i=1;tempdist>=0;i++){ //Задаю цикл, в котором я уменьшаю расстояние и считаю число минут(i). См выше.
tempdist2=(speed1+i*uskorMin)/60; //Здесь считаю расстояние которое проехал до следующего ускорения.
tempdist-=tempdist2; //Отнимаю от всего расстояния, которое он проедет.
} //И так для каждой минуты. Ведь он ускоряется каждую минуту на uskorMin.
++i; //Просто накидываю 1 минуту на погрешность.
time=i/60; //Считаю число целых часов.
hour=time;
mins=time-hour; //Считаю сколько минут в часах выражено.
min=mins*60; //И перевожу их в минуты.
cout<<"It will take ~ "<<hour<<" hours "<<min<<" munites..."<<endl; //Вывод результатов.
getch();
}