Задача. На узкой улице сломалась машина «Волга», в результате чего немедленно образовалась пробка, водитель впередистоящего грузовика предложил убрать «Волгу» с проезжей части дороги, оттащив её на обочину с троса. Удастся ли оттащить «Волгу»?
1. Постановка задачи
Цель: определить, при каких условиях удастся сдвинуть машину с места.
Результат: вывод сообщения: «Машина сдвинется с места» или «Машину сдвинуть с места не получится»
2. Математическая модель
Выделим те предположения, на которых основывается модель:
✓ поверхность дороги горизонтальная
✓ трение покоя больше трения скольжения
✓ сила трения равна произведению коэффициента трения на ускорение свободного падения и на массу «Волги»
✓ ускорение свободного падения равно 9,8 м/с2
✓ из всех сил, действующих на машину, рассматриваются только две: сила трения и сила тяги грузовика
✓ сила тяги грузовика ограничена
✓ усиление, которое может выдержать трос ограничено
✓ исходные данные: k – коэффициент трения, g – ускорение свободного падения (g = 9,8 м/с2), M – масса «Волги», Q – сила трения, F – сила тяги, с которой грузовик двигает «Волгу», R – максимальная нагрузка на трос.
Найти: сдвинется ли «Волга» с месте или «Волгу» сдвинуть с места не получится.
✓ математические соотношения:
Если Q < F и Q < R
то
«Волга» сдвинется
Q = M*k*g
Если Q < F то «Волга» сдвинется
Если Q < R то «Волга» сдвинется
Если Q > F и Q > R
то
«Волга» не сдвинется
Если Q > F то «Волга» не сдвинется
Если Q > R то «Волга» не сдвинется
3. Алгоритм
3.1. Словесная запись алгоритма
(составить и записать алгоритм для решения задачи)
3.2. Блок-схема
(составить и записать блок-схему для решения задачи)
4. Программирование
(составить и записать программу для решения задачи)
5. Анализ результата
(провести анализ результата и представить, при каких исходных данных машина сдвинется, и сто будет выведено на экран, а при каких данных машину сдвинуть не получится и какое сообщение появится на экране)
#include <cmath>
using namespace std;
bool prost(int m){
int k = 0;
for (int i=2; i<=sqrt(m); i++)
if (m % i == 0) k++;
return k==0;
}
int main(){
int n, r;
int i = 1;
cout << "n = ", cin >> n, cout << "\n";
if (prost(n)) {
cout << "1 * " << n << " = " << n << "\n";}
else {
r = n;
while (r != 1){
i++;
if (prost(i)){
while (r % i == 0){
r = r / i;
cout << i;
if (r != 1) cout << "*";
}
}
}
cout << "=" << n << "\n";
}
return 0;
}
Пример:
n = 2720
2*2*2*2*2*5*17=2720