tofilev
?>

Скласти допоміжний алгоритм переїзду перехрестя та основний алгоритм руху транспорту вулиці де ви мешкаєте Скласти алгоритм приготування обіду методом покрокової деталізації

Информатика

Ответы

alfaantonk

program cyclist2;

const

 Am1: array [0..1] of Integer = (50, 10); // график движения 1-го

 Av1: array [0..1] of Real    = (0.2, 0); // скорость 1-го (0 - стоит на месте, отдыхает, 12 км/ч = 12/60 = 0.2 км/мин)

 Am2: array [0..1] of Integer = (20, 10); // график движения 2-го

 Av2: array [0..1] of Real    = (0.3, 0); // скорость 2-го (0 - стоит на месте, отдыхает, 18 км/ч = 18/60 = 0.3 км/мин)

var

 m, m1, m2, p1, p2: Integer;

 n, n1, n2: Real;

begin

 Write ('Введите N: ');

 ReadLn (n);

 WriteLn;

 m := 0;   // счетчик минут

 p1 := 0;  // текущий график 1-го

 p2 := 0;  // текущий график 2-го

 m1 := Am1 [p1];    // начальное значение счетчика минут в графике 1-го

 m2 := Am2 [p2];    // начальное значение счетчика минут в графике 2-го

 n1 := 0;           // пройденное рассстояние 1-го

 n2 := 0;           // пройденное рассстояние 2-го

 while (n1 + n2) < n - 0.001 do begin    // проверка на истинность встреци. 0.001 для корректировки погрешность вычислений с Real

   Inc (m);             // следующая минута

   Dec (m1);            // уменьшаем длительность графика 1-го

   n1 := n1 + Av1 [p1]; // расчет пройденного расстояния

   if m1 <= 0 then begin  // если период в графике закончился, то

     if p1 = 0 then p1 := 1 else p1 := 0;  // изменяем период

     m1 := Am1 [p1];                       // устанавливаем длительность графика

   end;

   Dec (m2);                               // то же делаем для 2-го

   n2 := n2 + Av2 [p2];

   if m2 <= 0 then begin

     if p2 = 0 then p2 := 1 else p2 := 0;

     m2 := Am2 [p2];

   end;

//    WriteLn (m :5, n1 :5 :1, n2 :5 :1, n1 + n2 :5 :1);     // это для отладки, чтобы посмотреть движение по минутам - раскомментировать

 end;

 WriteLn ('Через ', m, ' минут велосипедисты встретятся.');

 ReadLn;

end.

Объяснение: комментарии в программе

Сороченкова-Александр

нужно действовать от обратного

возьмём число 18 и попробуем получить из него число 2. Так как мы начинаем алгоритм с конца то и действия превратятся в противоположные: -1 станет 1, *2  станет /2.

Разделим 18 на 2 = 9 (команда 2)

Прибавим 1 к 9 = 10 (команда 1)

Разделим 10 на 2 = 5 (команда 2)

Прибавим 1 к 5 = 6 (команда 1)

Разделим 6 на 2 = 3 (команда 2)

Получили порядок команд: 21212, но так как мы действовали от обратного нужно реверсировать порядок команд (записать команды в обратном порядке). В нашем случае изначальный порядок равен реверсированному (21212 = 21212), поэтому в этом нет необходимости.

В итоге получен алгоритм: 21212

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

Поделитесь своими знаниями, ответьте на вопрос:

Скласти допоміжний алгоритм переїзду перехрестя та основний алгоритм руху транспорту вулиці де ви мешкаєте Скласти алгоритм приготування обіду методом покрокової деталізації
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Lebedeva1577
vorobyeva6428
Chuhnin195107364
Anastasiya
Shaubnatali
АлексейГагиковна1774
sbelova
Серопян
asskokov
steam22-9940
avetisov-84850
ГазалиеваКозак
Номер 4 это очень кр по инфе ​
Lenok33lenok89
Мамедов
Мария-Кострыгина175