Стартап создал одну модель сотового телефона. Задача руководства – понять, по какой цене следует этот телефон продавать, чтобы получить максимальную прибыль. Отдел
маркетинга, промониторировав техно- блоги и форумы, составил таблицу спроса (см.
прикрепленный excell). Первая колонка – гипотетическая цена, от 1000 до 200 000 р за
штуку. Вторая колонка – сколько людей за отчетный период купят эту модель по цене,
заданной в первой колонке. Вопрос: по какой именно цене выгоднее всего продавать
смартфон?
Язык программирования любой. Желательно Python3 или Pascal
uses graphabc;
var a:array[1..5] of record x,y,x0,y0,g:real; end; i,c:integer;
begin
setwindowsize(800,600);
setpenwidth(2);
a[1].x:=400+150*cos(a[1].g/180*pi);
a[1].y:=300+150*sin(a[1].g/180*pi);
a[1].x0:=a[1].x;
a[1].y0:=a[1].y;
a[1].g:=a[1].g+1-(trunc(a[1].g) div 360)*360;
for i:=2 to 5 do begin
a[i].x:=a[i-1].x+150*power(0.65,i)*cos(a[i].g/180*pi);
a[i].y:=a[i-1].y+150*power(0.65,i)*sin(a[i].g/180*pi);
a[i].x0:=a[i].x;
a[i].y0:=a[i].y;
a[i].g:=a[i].g+power(10,i-1)-(trunc(a[i].g) div 360)*360;
end;
for c:=1 to 360 do
begin
a[1].x:=400+150*cos(a[1].g/180*pi);
a[1].y:=300+150*sin(a[1].g/180*pi);
line(round(a[1].x0),round(a[1].y0),round(a[1].x),round(a[1].y));
a[1].x0:=a[1].x;
a[1].y0:=a[1].y;
a[1].g:=a[1].g+1-(trunc(a[1].g) div 360)*360;
for i:=2 to 5 do begin
a[i].x:=a[i-1].x+150*power(0.65,i)*cos(a[i].g/180*pi);
a[i].y:=a[i-1].y+150*power(0.65,i)*sin(a[i].g/180*pi);
line(round(a[i].x0),round(a[i].y0),round(a[i].x),round(a[i].y));
a[i].x0:=a[i].x;
a[i].y0:=a[i].y;
a[i].g:=a[i].g+power(10,i-1)-(trunc(a[i].g) div 360)*360;
end;
end;
end.
С использованием файлов
program proizvedenie;
uses crt;
var a:array[1..1000] of real;
amax,amin,p:real;
i,n,i1,i2:integer; inp,outp:text;
begin
assign(inp,'input.txt');
assign(outp,'output.txt');
readln(n);
p:=1;
reset(inp);
for i:=1 to n do
read(inp,a[i]);
close(inp);
amin:=a[1];
for i:=1 to n do
if abs(amin)>=abs(a[i]) then begin
amin:=a[i]; i1:=i;
end;
amax:=a[1];
for i:=1 to n do
if abs(amax)<=abs(a[i]) then begin
amax:=a[i]; i2:=i;
end;
if (i2>i1) and (i1+1<>i2) then
for i:=i1+1 to i2-1 do
p:=p*a[i] else
if (i1>i2) and (i1-1<>i2) then
for i:=i1-1 downto i2+1 do
p:=p*a[i] else begin
write(0); exit; end;
rewrite(outp);
write(outp,p);
close(outp);
end.
Без файлов
program proizvedenie;
uses crt;
var a:array[1..1000] of real;
amax,amin,p:real;
i,n,i1,i2:integer;
begin
p:=1;
readln(n);
for i:=1 to n do
read(a[i]);
amin:=a[1];
for i:=1 to n do
if abs(amin)>=abs(a[i]) then begin
amin:=a[i]; i1:=i;
end;
amax:=a[1];
for i:=1 to n do
if abs(amax)<=abs(a[i]) then begin
amax:=a[i]; i2:=i;
end;
if (i2>i1) and (i1+1<>i2) then
for i:=i1+1 to i2-1 do
p:=p*a[i] else
if (i1>i2) and (i1-1<>i2) then
for i:=i1-1 downto i2+1 do
p:=p*a[i] else begin
write(0); exit; end;
write(p);
end.
Ошибки:
1)В разделе описания переменных var нет файловых переменных input и output;
2)В строке 24 нет begin...end;
3)Сравнивать нужно модули переменных amin и amax с модулем a[i];
+++Много лишних переменных