Вопрос: Торговый склад производит уценку хранящейся продукции. Если продукция хранится на складе дольше n месяцев, то она уценивается в 2 раза, а если срок хранения превысил m (m < n) месяцев, но не достиг n, то — в 1,5 раза. Получить ведомость уценки товаров, которая должна содержать следующую информацию: наименование товара, количество товара, цена товара до уценки, срок хранения товара, цена товара после уценки, общая стоимость товара до уценки, общая стоимость товара после уценки. Выяснить максимальный и минимальный сроки хранения товаров на складе; максимальную и минимальную цену товаров до уценки и после уценки.
Категория: школьный раздел
Ответы:
uses crt;
const nmax=50;
type sclad=record
           naz:string[20];
           kol:word;
           cn1,cn2:word;
           src:byte;
           st1,st2:longint;
           end;
var t:array[1..nmax] of sclad;
    k,i,n,m:byte;
    mxsr,mnsr:byte;
    mxc1,mnc1,mxc2,mnc2:word;
begin
clrscr;
{ввод данных}
repeat
write('Количество товаров до ',nmax,' k=');
readln(k);
until k in [1..nmax];
writeln('Введите данные о товарах:');
for i:=1 to k do
 begin
  writeln('Товар ',i);
  with t[i] do
   begin
    write(' Наименование: ');readln(naz);
    write(' Количество: ');readln(kol);
    repeat
    write(' Цена до уценки от 100 до 1000: ');
    readln(cn1);
    until(cn1>99)and(cn1<1001);
    repeat
    write(' Срок хранения на складе от 1 до 36: ');
    readln(src);
    until src in [1..36];
    st1:=kol*cn1;{стоимость до уценки}
   end;
 end;
clrscr;
{уценка, поиск макс и мин срока и цены до уценки}
repeat
writeln('Введите 2 критерия уценки, количество месяцев от 1 до 24 m<n');
readln(m,n);
until(m>0)and(n>m)and(m<25);
mxsr:=t[1].src;
mnsr:=t[1].src;
mxc1:=t[1].cn1;
mnc1:=t[1].cn1;
for i:=1 to k do
 begin
  if (t[i].src>=m)and(t[i].src<=n)then t[i].cn2:=round(t[i].cn1/1.5)
  else if t[i].src>n then t[i].cn2:=round(t[i].cn1/2)
  else t[i].cn2:=t[i].cn1;
  if t[i].src>mxsr then mxsr:=t[i].src;
  if t[i].src<mnsr then mnsr:=t[i].src;
  if t[i].cn1>mxc1 then mxc1:=t[i].cn1;
  if t[i].cn1<mnc1 then mnc1:=t[i].cn1;
  t[i].st2:=t[i].kol*t[i].cn2;{новая стоимость}
 end;
writeln('Ведомость товаров на cкладе:':40);
writeln('---------------------------------------------------------------');
writeln('|              |      |        Цена       |     Стоимость     |');
writeln('| Наименование | Срок |---------------------------------------|');
writeln('|              |      |до уценки|   после |до уценки|   после |');
writeln('---------------------------------------------------------------');
mxc2:=t[1].cn2;
mnc2:=t[1].cn2;
for i:=1 to k do
 begin
  with t[i] do
   begin
    gotoXY(1,whereY);write('| ',naz);
    gotoXY(16,whereY);write('|',src:4);
    gotoXY(23,whereY);write('|',cn1:9);
    gotoXY(33,whereY);write('|',cn2:9);
    gotoXY(43,whereY);write('|',st1:9);
    gotoXY(53,whereY);write('|',st2:9);
    gotoXY(63,whereY);writeln('|');
   end;
  {макс и мин цена после уценки}
  if t[i].cn2>mxc2 then mxc2:=t[i].cn2;
  if t[i].cn2<mnc2 then mnc2:=t[i].cn2;
 end;
writeln('---------------------------------------------------------------');
write('Press Enter...');
readln;
writeln('Максимальный срок хранения    =',mxsr);
writeln('Минимальный срок хранения     =',mnsr);
writeln('Максимальная цена до уценки   =',mxc1);
writeln('Минимальная цена до уценки    =',mnc1);
writeln('Максимальная цена после уценки=',mxc2);
writeln('Минимальная цена после уценки =',mnc2);
readln
end.