Advertisement
haunted_mind

le7

Dec 1st, 2020
538
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 6.09 KB | None | 0 0
  1. program uvp5;
  2. uses crt;
  3. type
  4.   diap=record
  5.     first:integer;
  6.     second:integer;
  7.   end;
  8.   toy=record
  9.     name:String[50];
  10.     cost:real;
  11.     age_rstrct:diap;
  12.   end;
  13. var
  14.  Rv:toy;
  15.  fv,fv1:array[1..52] of toy;
  16.  i,n,mode,end_arr: byte;
  17. procedure Frame (x1,y1,x2,y2,txt_col:Integer);
  18. const
  19.  a=#186; b=#187;
  20.  c=#188; d=#200;
  21.  e=#201; f=#205;
  22. var
  23.  i:Integer;
  24. begin
  25.  window(1,1,80,25);
  26.  textColor(txt_col);
  27.  gotoXY(x1,y1);
  28.  Write(e);
  29.  for i:=x1+1 to x2-1 do
  30.   Write(f);
  31.  Write(b);
  32.  for i:=y1+1 to y2-1 do
  33.  begin
  34.   gotoXY(x1,i);
  35.   write(a);
  36.   gotoXY(x2,i);
  37.   Write(a);
  38.  end;
  39.  gotoXY(x1,y2);
  40.  Write(d);
  41.  for i:=x1+1 to x2-1 do
  42.   Write(f);
  43.  Write(c);
  44.  window(x1+1,y1+1,x2-1,y2-1);
  45.  textColor(txt_col);
  46.  clrscr;
  47. end;
  48.  
  49. procedure create;
  50. var i:integer;
  51. begin
  52.   i:=1;
  53.   while true do
  54.     with Rv do
  55.     begin
  56.       clrscr;
  57.       Write('Name (end of input ++)-->');
  58.       Readln(name);
  59.       if name='++' then break;
  60.       Write('Cost -->'); ReadLn(cost);
  61.       WriteLn('Age restrictions:');
  62.       with age_rstrct do
  63.       begin
  64.         Write('From -->'); ReadLn(first);
  65.         Write('To -->'); ReadLn(second);
  66.       end;
  67.       fv[i]:=rv;
  68.       inc(i);
  69.     end;
  70.     end_arr:=i-1;
  71. end;
  72.  
  73. procedure output;
  74. const
  75.   a=#218; b=#196; c=#194; d=#191;
  76.   e=#179;
  77.   f=#195; g=#197; h=#180;
  78.   m=#192; k=#193; l=#217;
  79. var
  80.   i:integer;
  81. begin
  82.   clrscr;
  83.   WriteLn('Information about toys:');
  84.   Write(a,b,b,b,b,b,b,b,b,b,b,b,b,b,b,c,b,b,b,b,b,b,b);
  85.   writeln(b,b,c,b,b,b,b,b,b,b,b,b,b,c,b,b,b,b,b,b,b,b,d);
  86.   WriteLn(e,' Name         ',e,'Cost(BYN)',e,'From(year)',e,'To(year)',e);
  87.   Write(f,b,b,b,b,b,b,b,b,b,b,b,b,b,b,g,b,b,b,b,b,b,b);
  88.   writeln(b,b,g,b,b,b,b,b,b,b,b,b,b,g,b,b,b,b,b,b,b,b,h);
  89.   i:=1;
  90.   while i<=end_arr do
  91.   with fv[i] do
  92.   begin
  93.     WriteLn(e,Name:14,e,cost:9:2,e,
  94.             age_rstrct.first:10,e,age_rstrct.second:8,e);
  95.     inc(i);
  96.   end;
  97.   Write(m,b,b,b,b,b,b,b,b,b,b,b,b,b,b,k,b,b,b,b,b,b,b);
  98.   writeln(b,b,k,b,b,b,b,b,b,b,b,b,b,k,b,b,b,b,b,b,b,b,l);
  99.   repeat until KeyPressed;
  100. end;
  101.  
  102. procedure process;
  103. const
  104.   a=#218; b=#196; c=#194; d=#191;
  105.   e=#179;
  106.   f=#195; g=#197; h=#180;
  107.   m=#192; k=#193; l=#217;
  108. var
  109.   i:integer;
  110. begin
  111.   clrscr;
  112.   WriteLn('List of toys with cost not exceeding 50 for children under 6 years :');
  113.   Write(a,b,b,b,b,b,b,b,b,b,b,b,b,b,b,c,b,b,b,b,b,b,b);
  114.   writeln(b,b,c,b,b,b,b,b,b,b,b,b,b,c,b,b,b,b,b,b,b,b,d);
  115.   WriteLn(e,' Name         ',e,'Cost(BYN)',e,'From(year)',e,'To(year)',e);
  116.   Write(f,b,b,b,b,b,b,b,b,b,b,b,b,b,b,g,b,b,b,b,b,b,b);
  117.   writeln(b,b,g,b,b,b,b,b,b,b,b,b,b,g,b,b,b,b,b,b,b,b,h);
  118.   i:=1;
  119.   while i<=end_arr do
  120.   with fv[i] do
  121.   begin
  122.     if (cost<=50) and (age_rstrct.second<6) then
  123.       WriteLn(e,Name:14,e,cost:9:2,e,
  124.               age_rstrct.first:10,e,age_rstrct.second:8,e);
  125.       inc(i);
  126.   end;
  127.   Write(m,b,b,b,b,b,b,b,b,b,b,b,b,b,b,k,b,b,b,b,b,b,b);
  128.   writeln(b,b,k,b,b,b,b,b,b,b,b,b,b,k,b,b,b,b,b,b,b,b,l);
  129.   repeat until KeyPressed;
  130. end;
  131.  
  132. procedure add;
  133. var
  134.   i:integer;
  135. begin
  136.   i:=end_arr+1;
  137.   while true do
  138.   with rv do
  139.   begin
  140.     clrscr;
  141.     Write('Name (end of input ++)-->');
  142.     Readln(name);
  143.     if name='++' then break;
  144.     Write('Cost -->'); ReadLn(cost);
  145.     WriteLn('Age restrictions:');
  146.     with age_rstrct do
  147.     begin
  148.       Write('From -->'); ReadLn(first);
  149.       Write('To -->'); ReadLn(second);
  150.     end;
  151.     Fv[i]:=Rv;
  152.     inc(i);
  153.   end;
  154.   end_arr:=i-1;
  155. end;
  156.  
  157. procedure replace_record;
  158. begin
  159.   clrscr;
  160.   Write('Enter number of replaceabe record n=');
  161.   ReadLn(n);
  162.   rv:=fv[n];
  163.   with Rv do
  164.   begin
  165.     Write('Name: ',name,' -->'); ReadLn(name);
  166.     Write('Cost: ',cost:9:2,' -->'); ReadLn(cost);
  167.     Writeln('Age restrictions:');
  168.     with age_rstrct do
  169.     begin
  170.       Write('From: ',first,' -->'); ReadLn(first);
  171.       Write('To: ',second,' -->'); ReadLn(second);
  172.     end;
  173.   end;
  174.   fv[n]:=rv;
  175. end;
  176.  
  177. procedure replace_rec_field;
  178. var
  179.  field_num:1..4;
  180. begin
  181.   clrscr;
  182.   Write('Enter number of replaceable record n=');
  183.   ReadLn(n);
  184.   rv:=fv[n];
  185.   with Rv do
  186.   begin
  187.     Writeln('1 - Name:',name);
  188.     Writeln('2 - Cost:',cost:9:2);
  189.     WriteLn('Age restrictions:');
  190.     with age_rstrct do
  191.     begin
  192.       Writeln('3 - From:',first);
  193.       Writeln('4 - To:',second);
  194.     end;
  195.     Write('Enter num of replaceable field -->');
  196.     ReadLn(field_num);
  197.     case field_num of
  198.       1: begin
  199.            Write('Name: ',name,' -->'); ReadLn(name);
  200.          end;
  201.       2: begin
  202.            Write('Cost: ',cost:9:2,' -->'); ReadLn(cost);
  203.          end;
  204.       3: begin
  205.            Write('From: ',age_rstrct.first,' -->'); ReadLn(age_rstrct.first);
  206.          end;
  207.       4: begin
  208.            Write('To: ',age_rstrct.second,' -->'); ReadLn(age_rstrct.second);
  209.          end
  210.     end;
  211.   end;
  212.   fv[n]:=rv;
  213. end;
  214.  
  215. procedure delete_record;
  216. var
  217.   i,j:integer;
  218. begin
  219.   clrscr;
  220.   Write('Enter number of removable record n=');
  221.   ReadLn(n);
  222.   j:=1;
  223.   i:=1;
  224.   while i<=high(fv) do
  225.   begin
  226.     rv:=fv[i];
  227.     if i<>n then
  228.     begin
  229.       fv1[j]:=fv[i];
  230.       inc(j);
  231.     end;
  232.     i:=i+1;
  233.   end;
  234.   fv:=fv1;
  235.   dec(end_arr);
  236. end;
  237.  
  238. Begin
  239.  clrscr;
  240.  while true do
  241.  begin
  242.    window(1,1,80,27);
  243.    frame(1,1,30,12,14);
  244.    WriteLn('Menu:');
  245.    WriteLn('1 - Input array');
  246.    WriteLn('2 - Output array');
  247.    WriteLn('3 - Process array');
  248.    WriteLn('4 - Expand array');
  249.    WriteLn('5 - Change record');
  250.    WriteLn('6 - Change record''s field');
  251.    WriteLn('7 - Delete record');
  252.    WriteLn('8 - Exit');
  253.    Write('Choose mode->'); ReadLn(mode);
  254.    window (1,1,80,27);
  255.    case mode of
  256.    1: begin
  257.         Frame(35,1,70,10,14); create;
  258.       end;
  259.    2: begin
  260.         Frame(1,14,70,24,14);
  261.         WriteLn('Original array'); output;
  262.       end;
  263.    3: begin
  264.         Frame(1,14,70,24,14);
  265.         WriteLn('Array''s processing'); process;
  266.       end;
  267.    4: begin
  268.         Frame(35,1,70,10,14); add;
  269.       end;
  270.    5: begin
  271.         Frame(35,1,70,10,14); replace_record;
  272.       end;
  273.    6: begin
  274.         Frame(35,1,70,10,14); replace_rec_field;
  275.       end;
  276.    7: begin
  277.         Frame(35,1,70,10,14); delete_record;
  278.       end;
  279.    8: Exit
  280.   end;
  281. end;
  282. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement