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

Алгоритми для розрахунку депозитних відсотків


Практична робота 14 «Лінійні алгоритми на мові Pascal»

Завдання 1. Скласти і реалізувати алгоритм  для знаходження кількості днів, за яку виконають сумісну роботу два програміста, якщо такий об’єм роботи перший програміст самостійно виконує за k днів, а другий програміст самостійно виконує за m днів.
program  Robota_1;                     {назва    алгоритму}
var  k,m: real;                             {оголошення  змінних величин: k,m – це дійсні числа}
begin                                                                                      { початок   виконання алгоритму}
  writeln( 'k='); readln(k); writeln( 'm='); readln(m);    { введення двох чисел}
   k:=(k*m)/(k+m);                                                            { обчислення за формулою}
writeln('Разом виконають за ', k, ' днів');                   { виведення результату}
end.                                                                                     {закінчення алгоритму}
Протестуйте алгоритм для  таких значень  k i m: а)12 i 8; б)3,2 i  2,4; в)6,5 i 2,6; г)42 і36; д)40,30 і 40,45;  е)20 і 16; є)80 і 84.

Завдання 2. Скласти і реалізувати алгоритм  для знаходження справжньої маси монети, якщо її зважували на бракованих терезах з нерівними плечами, і при викладенні гирьок на першій чашечці, то маса монети на протилежній чашечці становила k грам, а при викладанні гирьок на другій чашечці терезів маса монети на протилежній чашечці становила  m грам.
program  Robota_2;                     {назва    алгоритму}
var  k,m: real;                             {оголошення  змінних величин: k, m – це дійсні числа}
begin                                                                                      { початок  виконання  алгоритму}
  writeln( 'k='); readln(k); writeln( 'm='); readln(m);    { введення двох чисел}
   k:=sqrt(k*m);                                                                 { обчислення за функцією квадратного кореня}
writeln('Cправжня маса монети: ', k, '  грам);                   { виведення результату}
end.                                                                                     {закінчення алгоритму}
Протестуйте алгоритм для  таких значень  k i m: а)12 i 8; б)3,2 i  2,4; в)6,5 i 2,6; г)42 і36; д)40,30 і 40,45;  е)20 і 16; є)80 і 84.

Завдання 3. Є три гаманці: татчин, мамчин, сина. У татовому гаманці: k грн, у маминому гаманці  m  грн. Бабуся запитала внучка, яку б ти хотів мати cуму грошей у своєму гаманці і запропонувала чотири можливі варіанти: 1) середнє арифметичне грошей у двох гаманцях, що мають  k+1000  грн і m-1000  грн відповідно; 2) середнє геометричне грошей, що у двох гаманцях, котрі мають  k-2000 грн і m+2000  грн відповідно; 3)середнє квадратичне грошей у двох гаманцях, котрі мають  k-3000 грн і m+3000  грн відповідно; 4) середнє гармонійне грошей у двох гаманцях, котрі мають  k+4000 грн і m-4000  грн відповідно. Для внучка бабусі скласти і реалізувати алгоритм  для впорядкування  від найбільшого до найменшого названих бабусею чотирьох грошових величин.
program  Robota_3;                     {назва    алгоритму}
var  k,m,n: real;                             {оголошення  змінних величин: k, m, n – це дійсні числа}
begin                                                                                      { початок  виконання  алгоритму}
  writeln( 'k='); readln(k); writeln( 'm='); readln(m);    { введення двох чисел}
   n:=sqrt(((k-3000)*(k-3000)+(m+3000)*(m+3000))*0.5);   {обчислення за фор-лою серед-ого квадр-ного}
writeln('Cереднє квадратичне: ', n, '  грн ');                   { виведення результату}
   n:= ((k+1000)+(m-1000))*0.5;                                 {обчислення за фор-лою серед-ого арифметичного}
writeln('Cереднє арифметичне: ', n, '  грн ');                   { виведення результату}
   n:=sqrt((k-2000)*(m+2000));                                   {обчислення за фор-лою серед-ого геометр-ного}
writeln('Cереднє геометричне: ', n, '  грн ');                   { виведення результату}
   n:=2*((k+4000)*(m-4000))/ ((k+4000)+(m-4000))   ;   {обчислення за фор-лою серед-ого гарм-ного}
writeln('Cереднє гармонійне: ', n, '  грн ');                   { виведення результату}
end.                                                                                     {закінчення алгоритму}
Протестуйте алгоритм для  таких значень  k i m: а)10000 i 80000; б)300000 i  400000; в)600500 i 900600.





Практична робота 15. Складені алгоритми з практичним змістом
Завдання 1. На вокзалі з потягу зійшли два пасажира і направились одночасно в один і той же пункт А. Перший пасажир половину часу йшов зі швидкістю v1 м/год, а другу половину часу йшов зі швидкістю v2 м/год. Другий пасажир йшов першу половину шляху зі швидкістю v2 м/год, а другу половину шляху зі швидкістю v1 м/год. Допоможіть слідчому, дізнатися, яку відстань долали пасажири від виходу із потяга до пункту призначення і хто першим прибуває в пункт А.  Скласти і реалізувати алгоритм  для вияснення, хто першим прибуває у пункт призначення і на скільки раніше, ніж інший, якщо відомо, що перший пасажир витрачає на весь свій шлях t хвилин?
program  TOURIST_1;                                                                                                {назва    алгоритму}
var  v1,v2,t1,t2, s1 : real;                       {оголошення  змінних величин: v1,v2,t1,t2, s1,s2 – це дійсні числа}
begin                                                                                                              { початок  виконання  алгоритму}
  writeln( 'v1='); readln(v1); writeln( 'v2='); readln(v2);  writeln( 't1='); readln(t1);      
   s1:=(v1+v2)*t1*0.5;                                                 {обчислення за фор-лою відстані від потяга до пункту}
writeln('Довжина шляху пасажирів', s1, '  метрів ');                                             { виведення результату}
t2:=(v1+v2)* (v1+v2)*t1*0.25/( v1*v2);                          {обчислення за фор-лою  часу другого пасажира}
writeln('Час руху другого пасажира: ',t2, '  хвилин ');                                              { виведення результату}
  if  t2 –t1=0 then writeln('У пункт  А  пасажири прибувають одночасно');   
if  t2 –t1>0 then writeln('У пункт  А раніше прибуває перший пасажир на: ', t2 –t1, '  хвилин. ');    end.                                                                                    
Протестуйте алгоритм для  таких значень  {v1; v2; t1}: а)(90; 80; 30)=0,1 хв; б) (85; 85; 40)=0 хв; в)(60; 80; 20)=0,42 хвилини.
Завдання 2. Якщо через рівні проміжки часу на депозитну картку вноситься деяка постійна сума К грн(періодичні внески) під складні відсотки Р% , то заощадження обчислюється за формулою
S=K*(1+p/100)*(exp(ln(1+p/100)*n)-1)/( (1+p/100)-1).
Скласти і реалізувати алгоритм  для вияснення cум грошей на депозитній картці через декілька років.
program BABLO_2;                     {назва    алгоритму}
var  k,p,r, s : real;      n, i: integer;  {оголошення  змінних величин: k,p,r,n, s – це дійсні числа}
begin                                                                                      { початок  виконання  алгоритму}
k:=1000+random(100);  writeln( ' Якщо сума, що вноситься на депозит k=', k); writeln;
p:=7+random(10);  writeln( ' Якщо відсоткова ставка для цього депозиту р=', p); writeln;
n:=1+random(10);  writeln( ' Якщо кількість років існування депозиту n=', n); writeln;
s:=1+p/100;   u:=1;                                 {обчислення початкового відсотку для виконання  алгоритму}
for i:=1 to n do begin                   {виконання циклу з лічильником по рокам для обчислення грошей}
u:=u*(1+p/100);    s:=1+p/100;    s:= K*s*(u-1)/(s-1); 
writeln( 'Кількість грошей на депозиті через', i, ' років S=', s); writeln; end; writeln('********'); end.
Протестуйте алгоритм декілька разів і порівняйте результати. Самостійно змініть діапазон вибору випадкових чисел в алгоритмі.
Завдання 3. Якщо протягом n років  на  депозитну картку  з сумою К грн нараховується m разів щорічно деякий постійний складний відсоток Р% , то заощадження обчислюється за формулою
S=K* exp(ln (1+p/(100*m))*n*m)
Скласти і реалізувати алгоритм  для вияснення cум грошей на депозитній картці через декілька років.
program BABLO_3;                                                                              {назва    алгоритму}
var  k,s : real;      u,m,n, i: integer;                          {оголошення  змінних величин  дійсні числа та цілі числа}
begin                                                              { початок  виконання  алгоритму і введення випадкових значень}
k:=1000+random(1000);  writeln( ' Якщо початкова сума на депозиті k=', k); writeln;
p:=7+random(10);  writeln( ' Якщо відсоткова ставка для цього депозиту р=', p); writeln;
n:=1+random(5);  writeln( ' Якщо кількість років існування депозиту n=', n); writeln;
m:=1+random(12);  writeln( ' Якщо кількість  нарахувань на депозит за рік m=', m); writeln;
s:=k; u:=n*m;                                                    {обчислення чисел для виконання  циклу в алгоритмі}
for i:=1  to  u  do  begin        {виконання циклу з лічильником по  нарахуванням для обчислення грошей}
s:= K*exp(ln(1+p/(100*i)))*i*i;
writeln( 'Кількість грошей на депозиті  після', i, ' –го нарахування S=', s); writeln; end; writeln('*****');   end.
Протестуйте алгоритм декілька разів і порівняйте результати. Самостійно змініть діапазон вибору випадкових чисел в алгоритмі.

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

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