Практична робота 13. Економічні
алгоритми на рентабельність
Завдання 1. Вартість
автомобіля дорівнює А грн, а його капітальний ремонт вимагає r грн.
Встановлено, що автомобіль може працювати без ремонту n років, а з
ремонтом m років. За яких умов між A, r, n, m витрати ремонту
являються рентабельними? При цьому треба врахувати, що після ремонту потужність
автомобіля дорівнює потужності нового автомобіля.
Розв’язання. А/n – це середня
вартість місяної експлуатації нового автомобіля. A+
r – це сумарна вартість автомобіля і ремонту. (A+ r)/m – це середня
вартість річної експлуатації автомобіля після
ремонту. Капітальний ремонт
автомобіля буде рентабельним, тобто окупить себе, тільки в тому випадку, якщо
середня вартість експлуатації автомобіля після ремонту буде більше ніж середня
вартість експлуатації до ремонту. Тому отримаємо нестрогу нерівність, (A+ r)/m <= А/n, звідки
отримаємо
r <=
А(m-n)/n.
Створити та
реалізувати мовою Паскаль алгоритм , який обчислює рентабельність ремонту автомобіля
при заданих A, r, n, m. Цей алгоритм використовує вкладені цикли і розгалуження в повній формі.
program remont1;
var a, r, m, n, b, i: integer; {оголошуються
змінні типу: цілі}
begin writeln(' Вводяться
початкові випадкові числа A, r, n, m. ');
a:=(10000+random(100000));
write('якщо вартість автомобіля: a =', a); writeln;
r:=(1000+random(90000)); write('якщо вартість ремонту: r =', r); writeln;
n:= 1+random(12); write('якщо
кількість місяців без ремонту: n=', n); writeln;
m:= 10+random(18); write('якщо
кількість місяців з ремонтом: m =', m); writeln;
for i:=1 to n do begin {два цикли з лічильником
для обчислення рентабельності}
for i:=1 to m do begin b:= a*(m-n) div n;
if (r<b) or (r=b) then {
повне розгалуження для перевірки
рентабельності }
writeln(' Варто
ремонтувати автомобіль, бо дешевий кап.ремонт ', r, ' =<', b)
else writeln(' Не варто
ремонтувати автомобіль, бо дорогий кап.ремонт ', r, ' >', b);
writeln; end; end; end.
Протестуйте цей алгоритм
декілька разів і порівняйте результати обчислень на кожному кроці. Спробуйте
самостійно змінити в алгоритмі діапазон випадкових чисел.
Завдання 2. Затрати при перевезенні вантажів двома видами
транспорту обчислюється за двома лінійними формулами: у1=a+bх, у2=m+kх, де х – це відстань перевезення в сотнях
кілометрів, у грн. – це транспортні витрати при перевезенні вантажу також a>0, b>0, m>0, n>0. Знайти, на які
відстані і яким видом транспорту перевезення вантажів буде рентабельним?
Розв’язання. Дві формули у1=a+bх, у2=m+kх задають
прямі лінії в прямокутній системі координат.
Одна з цих прямих лежить вище ніж друга. Ті точки, що лежать на прямій,
що розміщена нижче, означають, що затрат буде менше. Є випадок, коли ці прямі
перетинаються(це однакові затрати).
Координати точки перетину знаходиться із системи двох рівнянь,
тобто х=(m-a)/(b-k) сотень км; у= a+b*(m-a)/(b-k) грн. Отже, якщо перевозити на відстань менше ніж (m-a)/(b-k) км, то варто
користуватися першим видом транспорту, а
якщо перевозити на відстань більшу ніж (m-a)/(b-k) км, то варто користуватися другим видом
транспорту.
Створити та
реалізувати мовою Паскаль алгоритм , який обчислює і порівнює рентабельність
кожного виду транспорту для деякої відстані перевезення вантажу.
program perevoz2;
var a, k, m, x, b, y, с, v1, v2: integer; {оголошуються
змінні типу: цілі}
begin writeln(' Вводяться
початкові випадкові числа для: a>0, b>0, m>0, n>0 ');
a:=(300+random(900)); write('якщо
вартість 1-го перевізника: a =', a); writeln;
b:=(29+random(5)); write('якщо вартість палива на 100 км: b =', b); writeln;
m:=(400+random(900)); write('якщо
вартість 2-го перевізника:
m =', m); writeln;
k:=(26+random(4)); write('якщо вартість палива на 100 км: k =', k); writeln;
x:=(1+random(150)); write('якщо відстань перевезення вантажу: х =', х); writeln;
c:= (m-a) div (b-k); write('якщо відстань
перевезення вантажу: c =', c, ' то можна
на 2-ох видах транспорту' ); writeln;
v1:= a+b*x; write('вартість перевезення 1-им видом транспорту: v1 =', v1 ); writeln;
v2:= m+k*x; write('вартість перевезення 2-им видом транспорту: v2 =', v2); writeln;
if (v1<v2) then { повне
розгалуження для перевірки
рентабельності }
writeln('Варто везти 1-им видом транспорту, бо бо
менша вартість 1-ого ', v1, ' <', v2)
else writeln('Варто везти 2-им видом транспорту, бо менша вартість 2-ого
', v1, ' >', v2);
writeln; end.
Протестуйте цей алгоритм декілька разів і порівняйте результати обчислень на
кожному кроці. Спробуйте самостійно змінити в алгоритмі діапазон випадкових
чисел.
Немає коментарів:
Дописати коментар