середа, 18 квітня 2018 р.

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


ТЕСТУВАННЯ З МОВИ ПРОГРАМУВАННЯ PASCAL



Практична робота 37. 
Алгоритми знаходження максимумів виразів на множині цілих чисел

Завдання 1.Створити та реалізувати алгоритм мовою програмування Pascal, що знаходить найбільше значення виразу -3х-5у при таких обмеженнях: -10<х<10;            -10<y<10;     2x-3y<=5;     5x-2y<=8. 
Program MAX1;
      var   a,b:array[1..1000] of integer;        z, k,x,y,i,m,p: integer;
begin  k:=0; p:=-1000;
for  x:= -9 to 9 do begin  writeln(x, ' =x');
     for  y:= -9 to 9 do begin   writeln(y, ' =y');
      m:=-3*x-5*y;    writeln(-3*x-5*y,   ' =-3*x-5*y');
         if  ((2*x-3*y)<=5)and((5*x-2*y)<=8)and(m>p)   then    begin
         k:=k+1;    a[k]:=x;     b[k]:=y; writeln(' k= ', k);
 writeln(' a[k]:=', a[k]); writeln(' b[k]:=', b[k]);
  writeln(' значення виразу: - 3*x-5*y =', -3*a[k]-5*b[k]);
       end;  end;   end;
for  i:= 1 to k do  writeln(' x=a[i]= ', a[i], '     y=b[i]= ', b[i], '     i=', i, '     -3*a[i]-5*b[i]=',-3*a[i]-5*b[i], '     5*x-2*y=',5*a[i]-2*b[i],  '     2*x-3*y=', 2*a[i]-3*b[i]);
   z:=-3*a[1]-5*b[1];
for  i:= 1 to k do begin   if      (z<(-3*a[i]-5*b[i]))      then  z:=-3*a[i]-5*b[i]; end;
writeln(' найбільше значення виразу: -3*x-5*y=', z, ' кількість кроків  k=', k);
 writeln(' ***'); end.
Завдання 2.Створити та реалізувати алгоритм мовою програмування Pascal, що знаходить найбільше значення виразу -7х+8у при таких обмеженнях: -20<х<20;            -5<y<5;     x-3y<=12;     -x+3y<=10. 
Program MAX2;
      var   a,b:array[1..1000] of integer;        z, k,x,y,i,m,p: integer;
begin  k:=0; p:=-1000;
for  x:= -20 to 20 do begin  writeln(x, ' =x');
     for  y:= -5 to 5 do begin   writeln(y, ' =y');
      m:=-7*x+8*y;    writeln(-7*x+8*y,   ' =-7*x+8*y');
         if  ((x-3*y)<=12)and((-x+3*y)<=10)and(m>p)   then    begin
         k:=k+1;    a[k]:=x;     b[k]:=y; writeln(' k= ', k);
 writeln(' a[k]:=', a[k]); writeln(' b[k]:=', b[k]);
  writeln(' значення виразу: - 7*x+8*y =', -7*a[k]+8*b[k]);
       end;  end;   end;
for  i:= 1 to k do  writeln(' x=a[i]= ', a[i], '     y=b[i]= ', b[i], '     i=', i, '    
-7*a[i]+8*b[i]=',-3*a[i]-5*b[i], '     x-3*y=',  a[i]-3*b[i],  '     -x+3*y=',  -a[i]+3*b[i]);
   z:=-7*a[1]+8*b[1];
for  i:= 1 to k do begin   if      (z<(-7*a[i]+8*b[i]))      then  z:=-7*a[i]+8 *b[i]; end;
writeln(' найбільше значення виразу: -7*x+8*y=', z, '  кількість кроків k=', k);  writeln(' ***'); end.


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

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