Екі өлшемді суреттерді жасаудың механизмі 1860 жылдары ұсынылды. Механизм зоотроп, мутоскоп, праксиноскоп деп аталатын құрылғылардан тұрады. Бұл құрылғылар көрермендердің қабылдау инерциясы деп аталатын құбылысты жасады. Ол қозғалатын суреттерді әсерлі етіп жасау үшін жеткілікті үлкен жылдамдықпен көрсетілетін стопкадрлардың тізбегінен тұрды. Целлулоид пленкалардың немесе стоп-кадрлардың дамуы нақты уақыт режимінде дененің қозғалысын жазу мүмкіндігін берді. Кино-камералардың, кинопроекторлар мен көшіру пленкаларының дамуы нәтижесінде кескіндерді үлкейту және оны көрермендер үшін үлкен экранда көрсету мүмкіндігі болды, ол катушкадағы жеке омега компоненттерді жазу және сақтау арқылы іске асырылды
{ PascalABC.Net } const nn=100; var a:array[1..nn] of integer; n:integer;
procedure aInit(p,q:integer); { Инициализирует массив случайными целыми значениями из интервала [p;q] } var i,k:integer; begin Randomize; k:=q-p+1; for i:=1 to n do a[i]:=Random(k)+p end;
procedure aOut(k:integer); { Выводит в строку значения эементов массива, отводя элементу k позиций } var i:integer; begin for i:=1 to n do Write(a[i]:k); Writeln end;
function aMax():integer; { Возвращает максимальное значение элемента в массиве } var i,m:integer; begin m:=a[1]; for i:=2 to n do if m<a[i] then m:=a[i]; aMax:=m end;
function SumBeforeLastPositive():integer; { Возвращает сумму элементов массива, расположенных до последнего положительного элемента } var i,j,s:integer; flag:boolean; begin i:=n; flag:=false; while (not flag) and (i>=1) do begin flag:=(a[i]<=0); if not flag then Dec(i) end; s:=0; for j:=1 to i-1 do s:=s+a[j]; SumBeforeLastPositive:=s end;
procedure aShrink(pa,pb:integer); { Процедура сжимает массив, удаляя из него элементы, модуль которых находится в интервале [pa;pb]. Освободившийся элементы заполняются нулями. } var i,j,k:integer; flag:boolean; begin k:=0; i:=1; while i<=n do if a[i] in [pa..pb] then begin if k=0 then k:=i-1; j:=i+1; flag:=false; while (not flag) and (j<=n) do begin flag:=not (a[j] in [pa..pb]); if not flag then Inc(j); end; if flag then begin Inc(k); a[k]:=a[j]; i:=j+1 end else i:=n+1 end else begin Inc(k); a[k]:=a[i]; Inc(i) end; for i:=k+1 to n do a[i]:=0 end;
var p,q,k,b,c:integer; begin Write('Укажите количество членов в массиве: '); Read(n); Write('Укажите интервал значений элементов массива: '); Read(p,q); Write('Укажите интервал исключаемых элементов массива: '); Read(b,c); Write('Укажите количество позиций для вывода значений элемента: '); Read(k);
aInit(p,q); Write('Исходный массив'); aOut(k); Writeln('Значение максимального элемента равно ',aMax()); Writeln('Сумма до последнего положительного равна ',SumBeforeLastPositive()); Writeln('Сжатый массив'); aShrink(b,c); aOut(k) end.
Тестовое решение: Укажите количество членов в массиве: 15 Укажите интервал значений элементов массива: -6 9 Укажите интервал исключаемых элементов массива: -2 3 Укажите количество позиций для вывода значений элемента: 3 Исходный массив 7 7 7 -1 5 5 -5 6 0 -1 3 2 -4 1 8 Значение максимального элемента равно 8 Сумма до последнего положительного равна 35 Сжатый массив 7 7 7 5 5 -5 6 -4 8 0 0 0 0 0 0
Екі өлшемді суреттерді жасаудың механизмі 1860 жылдары ұсынылды. Механизм зоотроп, мутоскоп, праксиноскоп деп аталатын құрылғылардан тұрады. Бұл құрылғылар көрермендердің қабылдау инерциясы деп аталатын құбылысты жасады. Ол қозғалатын суреттерді әсерлі етіп жасау үшін жеткілікті үлкен жылдамдықпен көрсетілетін стопкадрлардың тізбегінен тұрды. Целлулоид пленкалардың немесе стоп-кадрлардың дамуы нақты уақыт режимінде дененің қозғалысын жазу мүмкіндігін берді. Кино-камералардың, кинопроекторлар мен көшіру пленкаларының дамуы нәтижесінде кескіндерді үлкейту және оны көрермендер үшін үлкен экранда көрсету мүмкіндігі болды, ол катушкадағы жеке омега компоненттерді жазу және сақтау арқылы іске асырылды
Объяснение:
const
nn=100;
var
a:array[1..nn] of integer;
n:integer;
procedure aInit(p,q:integer);
{ Инициализирует массив случайными целыми значениями из интервала [p;q] }
var
i,k:integer;
begin
Randomize;
k:=q-p+1;
for i:=1 to n do a[i]:=Random(k)+p
end;
procedure aOut(k:integer);
{ Выводит в строку значения эементов массива, отводя элементу k позиций }
var
i:integer;
begin
for i:=1 to n do Write(a[i]:k);
Writeln
end;
function aMax():integer;
{ Возвращает максимальное значение элемента в массиве }
var
i,m:integer;
begin
m:=a[1];
for i:=2 to n do
if m<a[i] then m:=a[i];
aMax:=m
end;
function SumBeforeLastPositive():integer;
{ Возвращает сумму элементов массива,
расположенных до последнего положительного элемента }
var
i,j,s:integer;
flag:boolean;
begin
i:=n; flag:=false;
while (not flag) and (i>=1) do begin
flag:=(a[i]<=0);
if not flag then Dec(i)
end;
s:=0;
for j:=1 to i-1 do s:=s+a[j];
SumBeforeLastPositive:=s
end;
procedure aShrink(pa,pb:integer);
{
Процедура сжимает массив, удаляя из него элементы,
модуль которых находится в интервале [pa;pb].
Освободившийся элементы заполняются нулями.
}
var
i,j,k:integer;
flag:boolean;
begin
k:=0; i:=1;
while i<=n do
if a[i] in [pa..pb] then
begin
if k=0 then k:=i-1;
j:=i+1; flag:=false;
while (not flag) and (j<=n) do begin
flag:=not (a[j] in [pa..pb]);
if not flag then Inc(j);
end;
if flag then begin Inc(k); a[k]:=a[j]; i:=j+1 end
else i:=n+1
end
else begin Inc(k); a[k]:=a[i]; Inc(i) end;
for i:=k+1 to n do a[i]:=0
end;
var
p,q,k,b,c:integer;
begin
Write('Укажите количество членов в массиве: ');
Read(n);
Write('Укажите интервал значений элементов массива: ');
Read(p,q);
Write('Укажите интервал исключаемых элементов массива: ');
Read(b,c);
Write('Укажите количество позиций для вывода значений элемента: ');
Read(k);
aInit(p,q);
Write('Исходный массив'); aOut(k);
Writeln('Значение максимального элемента равно ',aMax());
Writeln('Сумма до последнего положительного равна ',SumBeforeLastPositive());
Writeln('Сжатый массив');
aShrink(b,c); aOut(k)
end.
Тестовое решение:
Укажите количество членов в массиве: 15
Укажите интервал значений элементов массива: -6 9
Укажите интервал исключаемых элементов массива: -2 3
Укажите количество позиций для вывода значений элемента: 3
Исходный массив 7 7 7 -1 5 5 -5 6 0 -1 3 2 -4 1 8
Значение максимального элемента равно 8
Сумма до последнего положительного равна 35
Сжатый массив
7 7 7 5 5 -5 6 -4 8 0 0 0 0 0 0