Задаци: Кретање

Алгоритми и програми у програмском језику C: Кретање.

Путовање

Прочитај текст задатка.

Брзина \(v\) при равномерном кретању једнака је количнику пређеног пута \(s\) и времена \(t\), тј. важи веза \(v=\frac{s}{t}\). Зато се време израчунава као количник пређеног пута и брзине кретања (формула за време приликом равномерног кретања \(t=\frac{s}{v}\)). Према томе, потребно је исписати количник два учитана броја.

Предложено решење задатка

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    double v, s;
    scanf("%lf%lf", &v, &s);
    double t = s / v;
    printf("%.2lf", t);
    return 0;
}

Бициклиста

Прочитај текст задатка.

Пређени пут и брзину рачунамо на основу датих формула. Како је брзина изражена у \(\frac{m}{s}\) и убрзање у \(\frac{m}{s^2}\), један минут кретања је потребно у формуле унети као 60 секунди.

Предложено решење задатка

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    double v0, a;
    scanf("%lf%lf", &v0, &a);
    double t = 60;
    double s = v0 * t + (a * t * t) / 2;
    double v = v0 + a * t;
    printf("%.2lf\n%.2lf", s, v);
    return 0;
}

Сустизање аутомобила

Прочитај текст задатка.

Аутомобили се крећу равномерно, тако да ће се решење заснивати на вези између брзине, пређеног пута и времена \(v=\frac{s}{t}\).

Аутомобили полазе са истог места па до сустизања долази када аутомобили пређу исти пут. Тражено време можемо одредити изједначавањем пређених путева.

За почетак је потребно да све изразимо у истим јединицама. Ако је брзина аутомобила једнака \(v\frac{m}{s}\), пошто један минут износи 60 секунди (тј. важи да је \(m=60 \ s\)), брзина је једнака \(v\frac{m}{s}\cdot{60}\frac{s}{min}=(v\cdot{60})\frac{m}{min}\).

Обележимо са \(x\) број минута после којих други аутомобил сустиже први. Први аутомобил се до сустизања креће \(t+x\) минута а други \(x\) минута. Пређени пут при равномерном кретању једнак је производу брзине и времена (\(s=v\cdot{t}\)). Зато је пут који до сустизања пређе први аутомобил \((t+x) \ min\cdot((v_1\cdot{60})\frac{m}{min})=(t+x)\cdot{v_1}\cdot{60} \ m\), а пут који до сустизања пређе други аутомобил \(x \ m\cdot((v_2\cdot{60})\frac{m}{min})=x\cdot{v_2}\cdot{60} \ m\).

Пошто су у тренутку сусрета оба аутомобила прешла исто растојање, изједначавањем пређених путева добијамо једначину \((t+x)\cdot{v_1}\cdot{60} \ m=x\cdot{v_2}\cdot{60} \ m\) тј. \((t+x)\cdot{v_1}=x\cdot{v_2}\) чије решење је \(x=\frac{v_1\cdot{t}}{v_2-v_1}\).

Предложено решење задатка

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    double v1, v2, t;
    scanf("%lf%lf%lf", &v1, &v2, &t);
    double x = (v1 * t) / (v2 - v1);
    printf("%.2lf", x);
    return 0;
}

Растојање кућа

Прочитај текст задатка.

У задатку се обојица крећу равномерно, тако да ће се решење заснивати на вези између брзине, пређеног пута и времена \(v=\frac{s}{t}\).

Обележимо са \(x\) растојање у метрима између Микине и Перине куће. Посматрајмо удаљеност Пере и Мике од Микине куће. На почетку њиховог кретања Пера је удаљен \(x\) метара од Микине куће, а Мика \(0\) метара. За \(t\) секунди Пера пређе пут \(s_1=v_1\cdot{t}\) метара, а Мика пут \(s_2=v_2\cdot{t}\) метара. Према томе, после \(t\) секунди од почетка њиховог кретања Пера је удаљен \((x+s_1)\) метара од Микине куће, а Мика \(s_2\) метара. По услову задатака после \(t\) секунди Мика је био \(d\) метара иза Пере, што значи да је разлика њихових растојања од Микине куће једнака \(d\) метара. Тако добијамо једначину \((x+s_1)-s_2= d\). Решавањем претходне једначине добијамо тражено растојање између њихових кућа у метрима \(x=s_2-s_1+d\).

Предложено решење задатка

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    double v1, v2, t, d;
    scanf("%lf%lf%lf%lf", &v1, &v2, &t, &d);
    double s1 = v1 * t;
    double s2 = v2 * t;
    double x = s2 - s1 + d;
    printf("%.2lf", x);
    return 0;
}

Колона

Прочитај текст задатка.

Потребно је одредити време које је потребно куриру да сустигне војника на челу колоне полазећи са краја колоне и време које је потребно куриру да стигне до краја колоне полазећи са чела колоне.

У задатку се врши равномерно кретање тако да ће се решење заснивати на вези између брзине, пређеног пута и времена \(v=\frac{s}{t}\).

Важно је напоменути да дужину колоне изразимо у километрима да би ускладили јединицу пута и датих брзина. Пошто један километар има 1000 метара, ако је дужина колоне једнака \(d\) метара, она је једнака \(d'=\frac{d}{1000}\) километара.

Обележимо са \(t_1\) време (изражено у сатима) које је потребно куриру да са краја колоне стигне до чела колоне. Пут који курир треба да пређе да би дошао до чела колоне једнак је збиру дужине колоне и пута који војник са чела колоне пређе за време \(t_1\). Према томе имамо једначину \(v_k\frac{km}{h}\cdot{t_1} \ h=d' \ km + v\frac{km}{h}\cdot{t_1} \ h\), тј. \(v_k\cdot{t_1}=d'+v\cdot{t_1}\) из које добијамо да је \(t_1=\frac{d'}{v_k-v}\).

Слично можемо одредити време \(t_2\) (изражено у сатима) које је потребно куриру да са чела колоне стигне до краја колоне. Пут који курир треба да пређе да би дошао од чела колоне до краја једнако је разлици дужине колоне и пута који војник, прецизније командант, са краја колоне пређе за време \(t_2\). Према томе имамо једначину \(v_k\frac{km}{h}\cdot{t_2} \ h=d' \ km-v\frac{km}{h}\cdot{t_2} \ h\) тј. \(v_k\cdot{t_2}=d'-v\cdot{t_2}\) из које добијамо да је \(t_2=\frac{d'}{v_k+v}\).

На крају укупно време \(t\) у сатима добијамо тако што саберемо добијена времена \(t_1\) и \(t_2\). Пошто се резултат тражи у минутима, добијени збир треба на крају претворити у минуте (помноживши га са 60, јер у једном сату има 60 минута) чиме добијамо време \(t'=t\cdot{60}\).

Уместо коришћења посебних променљивих за дужину колоне у метрима \(d\) и километрима \(d'\), могуће је користити само једну променљиву \(d\) и њој променити вредност одмах након учитавања броја метара, како би се постигла усаглашеност јединица. Слично, уместо две посебне променљиве за време у сатима \(t'\) и у минутима \(t\), употребићемо једну променљиву \(t\) којој се вредност мења током рада програма. Појава да променљиве мењају своје вредности током извршавања програма назива се мутабилност, користи се често у програмирању, међутим, није својствена за математику што променљиве у математици и програмирању чини прилично различитим.

Предложено решење задатка

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    double d, v, vk, t1, t2, t;
    scanf("%lf%lf%lf", &d, &v, &vk);
    d /= 1000;
    t1 = d / (vk - v);
    t2 = d / (vk + v);
    t = t1 + t2;
    t *= 60;
    printf("%.2lf", t);
    return 0;
}

Браћа и пас

Прочитај текст задатка.

Потребно је одредити који пут пас претрчи док се браћа не сретну. Пас прво претрчи пут од првог до другог брата, а затим пут од другог до првог итд. Нема потребе сваки од тих путева посебно рачунати јер пас се креће равномерно док се браћа не сретну и нама није од важности колико у ком смеру он претрчи већ укупан пут. Према томе потребно је одредити време (изражено у секундама) које протекне док се браћа не сретну и добијено време помножити са брзином пса, на тај начин добијамо пут који је пас претрчао.

У решавању примењујемо формулу која повезује пређени пут, брзину и време при равномерном кретању (\(s=v\cdot{t}\)) при чему морамо да водимо рачуна о коришћеним јединицама мере. Обележимо са \(t\) време (изражено у сатима) које протекне до сусрета браће. За време \(t\) збир путева који браћа пређу једнак је растојању између браће (оно је једнако \(d \ m\) тј. \(\frac{d}{1000} \ km\)), што можемо записати једначином \(t \ h\cdot{v_1}\frac{km}{h}+t \ h\cdot{v_2}\frac{km}{h}=\frac{d}{1000} \ km\), тј. \(t\cdot{v_1}+t\cdot{v_2}=\frac{d}{1000}\). Из претходне једначине одредимо \(t\) у сатима (\(t=\frac{\frac{d}{1000}}{v_1+v_2}\)). Добијено време изражено у сатима се може изразити у секундама множењем са 3600 (пошто у сату има 60 минута, а у сваком минуту има 60 секунди). На крају одредимо дужину пута \(s\) у метрима који пас претрчи (\(s \ m=(t\cdot{3600}) \ s\cdot{v_p}\frac{m}{s}\), тј. \(s=(t\cdot{3600})\cdot{v_p}\)).

Предложено решење задатка

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    double d, v1, v2, vp;
    scanf("%lf%lf%lf%lf", &d, &v1, &v2, &vp);
    double t = (d / 1000) / (v1 + v2);
    double s = (t * 3600) * vp;
    printf("%.2lf", s);
    return 0;
}