Advertisement
haunted_mind

dhg

Nov 11th, 2020
456
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.00 KB | None | 0 0
  1. program uvp3;
  2. uses crt;
  3. type
  4.   arr=array[1..18] of integer;
  5. const
  6.   menus:array[1..5] of string= ('Input array',
  7.                                 'Output original array',
  8.                                 'Conditional sorting',
  9.                                 'Output changed array',
  10.                                 'Exit');
  11. var
  12.  realarr,changedarr:arr;
  13.  rmode,num :Byte;
  14.  
  15. procedure Frame (x1,y1,x2,y2,txt_col:Integer);
  16. const
  17.  a=#186; b=#187;
  18.  c=#188; d=#200;
  19.  e=#201; f=#205;
  20. var
  21.  i:Integer;
  22. begin
  23.  window(1,1,80,25);
  24.  textColor(txt_col);
  25.  gotoXY(x1,y1);
  26.  Write(e);
  27.  for i:=x1+1 to x2-1 do
  28.   Write(f);
  29.  Write(b);
  30.  for i:=y1+1 to y2-1 do
  31.  begin
  32.   gotoXY(x1,i);
  33.   write(a);
  34.   gotoXY(x2,i);
  35.   Write(a);
  36.  end;
  37.  gotoXY(x1,y2);
  38.  Write(d);
  39.  for i:=x1+1 to x2-1 do
  40.   Write(f);
  41.  Write(c);
  42.  window(x1+1,y1+1,x2-1,y2-1);
  43.  textColor(txt_col);
  44.  clrscr;
  45. end;
  46.  
  47.  
  48.  
  49.  
  50.  
  51. Procedure menu(var mode:Byte);
  52. Var
  53.  k,i:Byte;
  54.  code:Char;
  55. Begin
  56.  frame (1,1,23,8,14);
  57.  writeln('MENU');
  58.  k:=1;
  59.  code:=' ';
  60.  While code<>#13 do
  61.  begin
  62.    For i:=1 to 5 do
  63.    begin
  64.      If i=k then
  65.        TextBackGround(Green)
  66.      else
  67.        textbackground(black);
  68.      GotoXY(1,i+1);
  69.      Write(menus[i]);
  70.    end;
  71.    code:=ReadKey;
  72.    If code=#0 then
  73.    begin
  74.      code:=ReadKey;
  75.      If code=#72 then
  76.        If k>1 then k:=k-1
  77.        else k:=5
  78.      else if code=#80 then
  79.        If k<5 then k:=k+1
  80.        else k:=1;
  81.    end;
  82.    mode:=k;
  83.  end;
  84. end;
  85.  
  86. procedure input_array(var a,b:arr; var n:byte);
  87. var
  88.   i:integer;
  89. begin
  90.   write('Enter num: ');
  91.   read(n);
  92.   writeln('Enter array: ');
  93.   for i:=1 to n do
  94.   begin
  95.     read(a[i]);
  96.     b[i]:=a[i];
  97.   end;
  98. end;
  99.  
  100. procedure output_array(a:arr;n:byte; const s:string);
  101. var
  102.   i:integer;
  103. begin
  104.   writeln(s);
  105.   for i:=1 to n do
  106.     write(a[i],' ');
  107. end;
  108.  
  109. procedure condit_sort(var a:arr; n:byte);
  110. var
  111.   s,i,k,r:integer;
  112. begin
  113.   s:=1;
  114.   i:=1;
  115.   while i<=n do
  116.   begin
  117.     s:=s+a[i];
  118.     i:=i+2;
  119.   end;
  120.   writeln('s =',s,'; first el is ',a[i]);
  121.   if s>a[1] then
  122.   begin
  123.     writeln('s>first el. Array should be sorted');
  124.  
  125.     for i:=1 to n-1 do
  126.     begin
  127.       if a[i]<a[i+1] then
  128.       begin
  129.         r:=a[i];
  130.         a[i]:=a[i+1];
  131.         a[i+1]:=a[i];
  132.       end;
  133.       if i>1 then  for k:=i+1 downto 2 do
  134.       begin
  135.         if a[k-1]<a[k] then
  136.         begin
  137.           r:=a[k];
  138.           a[k]:=a[k-1];
  139.           a[k-1]:=r;
  140.         end
  141.         else break;
  142.       end;
  143.   end;
  144. end;
  145.  
  146. begin
  147.   clrscr;
  148.   while true do
  149.   begin
  150.     menu(rmode);
  151.     case rmode of
  152.       1:begin
  153.           frame(1,11,80,16,14);
  154.           input_array(realarr,changedarr,num);
  155.         end;
  156.       2:begin
  157.           frame(1,11,80,16,14);
  158.           output_array(realarr,num,'ORIGINAL ARRAY');
  159.         end;
  160.       3:begin
  161.           frame(26,1,80,9,14);
  162.           condit_sort(changedarr,num);
  163.         end;
  164.       4:begin
  165.           frame(1,19,80,23,14);
  166.           output_array(changedarr,num,'CHANGED ARRAY');
  167.         end;
  168.       5:exit
  169.     end;
  170.   end;
  171. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement