program z_1; uses xcrt; const name: array[0..6] of string[12] = (' ','Правда ','Speed-Info','Известия ', 'Сум. прибыль','Ср.газеты','Доп. газеты'); type tl = record c,n: real; end; tar = array[1..3,0..5] of tl; tarMax = array[1..3] of tl; tjo = array[1..3] of integer; var i,j,r:integer; s,p:string; k: byte; ar,dob: tar; {массив прибылей за месяц и массив "добавок"} arMax: tarMax; jo: tjo; gon,procent: array[1..3] of real; pok: array[1..3] of real; voz: array[1..3] of real; x1,x2,x3,x4,Sum: real; a,b,g: integer; f,pokup,prosr,proc: text; tab:array[0..5,0..3] of integer; begin clrscr; Writeln(' Ввод данных по спросу на газеты производится в spros.txt'); Writeln(' Ввод данных по ценам закупки газет производится в pokupka.txt'); Writeln(' Ввод данных по ценам возврата газет производится в prosroch.txt'); Writeln(' Ввод данных о вероятности доп.прибыли производится в procent.txt'); {Берем данные по спросу на газеты из фаила spros.txt} assign(f,'.\spros.txt'); reset(f); i:=0; while not eof(f) do begin readln(f,s); s:=s+' '; for j:=0 to 3 do begin p:=copy(s,1,pos(#32,s)-1); { writeln(p,i,j,r);} val(p,tab[i,j],r); delete(s,1,pos(#32,s)); end; i:=i+1; end; close(f); {Берем данные по цене закупки газет из фаила pokupka.txt} assign(pokup,'pokupka.txt'); reset(pokup); while not eof(pokup) do begin readln(pokup,s); s:=s+' '; for j:=1 to 3 do begin p:=copy(s,1,pos(#32,s)-1); val(p,pok[j],r); delete(s,1,pos(#32,s)); end; end; close(pokup); {Берем данные по цене возврата газет из фаила prosroch.txt} assign(prosr,'prosroch.txt'); reset(prosr); while not eof(prosr) do begin readln(prosr,s); s:=s+' '; for j:=1 to 3 do begin p:=copy(s,1,pos(#32,s)-1); val(p,voz[j],r); delete(s,1,pos(#32,s)); end; end; close(prosr); {Берем данные o вероятности доп.прибыли газет из фаила procent.txt} assign(proc,'procent.txt'); reset(proc); while not eof(proc) do begin readln(proc,s); s:=s+' '; for j:=1 to 3 do begin p:=copy(s,1,pos(#32,s)-1); val(p,procent[j],r); delete(s,1,pos(#32,s)); end; end; close(proc); {Инициализация переменных} Sum:=0; x1:=0; x2:=0; x3:=0; x4:=0; for i:=1 to 3 do begin arMax[i].c:=0; jo[i]:=0; gon[i]:=0 end; for i:=1 to 3 do for j:=0 to 5 do begin dob[i,j].c:=0; end; {Расчет чистой прибыли(без учета сверхприбыли)} for i:=1 to 3 do begin case i of 1: begin a:=2; b:=3; end; 2: begin a:=1; b:=3; end; 3: begin a:=1; b:=2; end; end; for j:=0 to 5 do begin for k:=j to 5 do x1:=x1+tab[k,i];{Суммарное кол-во газет} for k:=j downto 1 do x2:=x2+tab[k,i]*tab[k,0];{Прибыль без учета просроченных} x4:=tab[1,i]+tab[2,i]+tab[3,i]+tab[4,i]+tab[5,i]; x3:=x4-x1; x1:=tab[j,0]*x1; ar[i,j].c:=x1+x2*pok[i]*2+(tab[j,0]*x3-x2)*voz[i]- pok[i]*tab[j,0]*x4;{Прибыль с учетом просроченных} x1:=0; x2:=0; x3:=0; x4:=0; {Расчет добавочной прибыли} if j<>5 then begin for k:=j to 4 do dob[i,j].n:=dob[i,j].n+(tab[k+1,0]-tab[j,0])*tab[k+1,i]; dob[i,j].n:=trunc(dob[i,j].n*Procent[i]); end else dob[i,j].n:=0; dob[i,j].c:=dob[i,j].n*pok[a]*2+dob[i,j].n*pok[b]*2; ar[i,j].c:=ar[i,j].c+dob[i,j].c; ar[i,j].n:=tab[j,0]; end; end; {Поиск max прибыли} for i:=1 to 3 do begin for j:=0 to 5 do begin if ar[i,j].c > arMax[i].c then begin arMax[i].c:=ar[i,j].c; jo[i]:=j end; end; arMax[i].c:=arMax[i].c-dob[i,jo[i]].c; arMax[i].n:=ar[i,jo[i]].n; end; {Суммирование основной и добавочной прибыли} for i:=1 to 3 do begin case i of 1: begin a:=2; b:=3; end; 2: begin a:=1; b:=3; end; 3: begin a:=1; b:=2; end; end; arMax[i].c:=arMax[i].c+dob[a,jo[a]].n*pok[i]*2+dob[b,jo[b]].n*pok[i]*2;{Прибыль+Сверхприбыль} arMax[i].n:=arMax[i].n;{Кол-во "основных газет" } gon[i]:=(dob[a,jo[a]].n+dob[b,jo[b]].n)/100;{Кол-во "дополнительных"газет} end; {Вывод результатов} writeln(' покупка возврат процент'); for i:=1 to 3 do writeln(name[i],' ',pok[i]:2:2, ' ',voz[i]:8:2,' ',procent[i]:8:2); for i:=0 to 3 do begin write(name[i],' '); for j:=0 to 5 do write(' ',tab[j,i]); writeln; end; writeln; writeln(' Сводная таблица прибыли за 100 дней: '); write(' '); for j:=0 to 5 do write(tab[j,0]:8); writeln; for i:=1 to 3 do begin write(name[i],' '); for j:=0 to 5 do write(ar[i,j].c-dob[i,j].c:7:0,' '); writeln; end; writeln; writeln(' Результаты: '); write(' '); for i:=4 to 6 do write(name[i]:16); writeln; for i:=1 to 3 do begin Sum:=Sum+arMax[i].c/100; arMax[i].n:=trunc(arMax[i].n); write(name[i],' '); write(arMax[i].c/100:15:2,' ',arMax[i].n:15:2,' ',gon[i]:15:2); writeln end; writeln(' Чистый доход составит ',Sum:4:2); readln; end.