program text;
uses crt;
const k=100;
var a,b,c,d,f,dt,mx,s1,s2,z:real;n,m,k1,k2,kl:byte;key:char;str:string[55];

function diskrimenant(a,b,c:real):real;
  begin
    diskrimenant:=sqr(b)-4*a*c;
  end;

function maxkoren(a,b,dt:real):real;
  var x1,x2:real;
  begin
    x1:=(-b-sqrt(dt))/2*a;x2:=(-b+sqrt(dt))/2*a;
    if x1>=x2 then maxkoren:=x1
              else maxkoren:=x2;
  end;

procedure massiv(var s:real;var k:byte;kol:byte);
  var mas:array[1..100] of real;i:byte;
  begin
    s:=0;k:=0;
    for i:=1 to kol do begin
      mas[i]:=random(200)-100;
      if mas[i]>0 then begin
          s:=s+mas[i];inc(k);
        end;
    end;
  end;

function menu:byte;
  var str1,str2,str3:string[9];kl:byte;key:char;
  begin
    str1:='ФУНКЦИЯ';str2:='ПРОЦЕДУРА';str3:='ВЫХОД';
    window(25,24,55,24);
    textcolor(15);gotoxy(13,1);write(str2);
    textcolor(15);gotoxy(25,1);write(str3);
    textcolor(16);gotoxy(3,1);write(str1);kl:=1;
    repeat
      key:=readkey;
      case key of
        #75: begin
               if kl=2 then begin kl:=1;
                   textcolor(15);gotoxy(13,1);write(str2);
                   textcolor(16);gotoxy(3,1);write(str1);
                 end;
               if kl=3 then begin kl:=2;
                   textcolor(15);gotoxy(25,1);write(str3);
                   textcolor(16);gotoxy(13,1);write(str2);
                 end;
             end;
        #77: begin
               if kl=2 then begin kl:=3;
                   textcolor(15);gotoxy(13,1);write(str2);
                   textcolor(16);gotoxy(25,1);write(str3);
                 end;
               if kl=1 then begin kl:=2;
                   textcolor(15);gotoxy(3,1);write(str1);
                   textcolor(16);gotoxy(13,1);write(str2);
                 end;
             end;
      end;
    until key=#13;
    menu:=kl;
  end;
begin
  textattr:=(1+16*7);clrscr;
  window(3,1,46,4);textattr:=28;clrscr;textcolor(2);
  gotoxy(3,2);write('Л А Б О Р А Т О Р Н А Я  Р А Б О Т А  №6');
  gotoxy(12,3);write('В А Р И А Н Т  №1');
  window(48,1,78,4);textattr:=64;clrscr;textcolor(2);
  gotoxy(2,1);write('ВЫПОЛНИЛ:');textcolor(1);
  gotoxy(13,1);write('студент 1-го курса');
  gotoxy(13,2);write('группы 1ПИ01');
  gotoxy(13,3);write('Akopov Roman');
  repeat

    window(3,5,78,8);textattr:=(1+16*2);clrscr;
    textcolor(4);gotoxy(3,2);write('ЗАДАНИЕ:');textcolor(1);
    if kl=1 then begin
        gotoxy(13,2);write('вычислить наибольший корень квадратного уравнения');
      end;
    if kl=2 then begin
        gotoxy(13,2);write('вычислить');
      end;

    window(1,9,80,25);textattr:=(1+16*7);clrscr;
    gotoxy(12,2);textcolor(4);write('ВВОД ДАННЫХ:');textcolor(2);
    if kl=1 then begin
        gotoxy(2,3);write('уравнение:  sqr(x)-a*x+b=0');
        gotoxy(14,4);write('a = ');read(a);
        gotoxy(14,5);write('b = ');read(b);
        gotoxy(41,3);write('уравнение:  c*sqr(x)-d*x-f=0');
        gotoxy(55,4);write('c = ');read(c);
        gotoxy(55,5);write('d = ');read(d);
        gotoxy(55,6);write('f = ');read(f);
      end;
    if kl=2 then begin
        gotoxy(2,3);write('число элементов массива X:');
        repeat
          gotoxy(30,3);clreol;read(n);
        until n<=k;
        gotoxy(2,4);write('число элементов массива Y:');
        repeat
          gotoxy(30,4);clreol;read(m);
        until m<=k;
      end;

    gotoxy(12,8);textcolor(4);write('РЕЗУЛЬТАТ:');textcolor(2);
    if kl=1 then begin
        gotoxy(23,9);write('Наибольший корень уравнения равен:');
        gotoxy(2,10);dt:=diskrimenant(1,-a,b);
        if dt>=0 then begin
            mx:=maxkoren(1,-a,dt);write('корень = ',mx:5:2);
          end
          else write('нет корней');
        gotoxy(41,10);dt:=diskrimenant(c,-d,-f);
        if dt>=0 then begin
            mx:=maxkoren(c,-d,dt);write('корень = ',mx:5:2);
            end
            else write('нет корней');
      end;
    if kl=2 then begin
        massiv(s1,k1,n);massiv(s2,k2,m);z:=(s1+s2)/k1*k2;
        gotoxy(2,9);write('(s1+s2)/k1*k2 = ',z:5:2);
        str:=' - сумма и количество положительных элементов массива ';
        gotoxy(2,10);write('s1 и k1',str,'X(N)');
        gotoxy(2,11);write('s2 и k2',str,'Y(M)');
      end;

    kl:=menu;
  until kl=3;
end.