вівторок, 13 березня 2018 р.

Aлгоритми на рентабельність


Практична робота 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.
Протестуйте цей алгоритм декілька разів і порівняйте результати обчислень на кожному кроці. Спробуйте самостійно змінити в алгоритмі діапазон випадкових чисел.

Немає коментарів:

Дописати коментар