{ 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
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
это язык си++ он похож на си#
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
// пункт а, если первая больше выводит 1, если последняя то 3, если равны то ==. Аналогично с пунктами в и с
cout << "a)";
if (n / 100 > n % 10)
cout << 1 << "\n";
else if (n / 100 < n % 10)
cout << 3 << "\n";
else
cout << "==" << "\n";
cout << "b)";
if (n / 100 > n / 10 % 10)
cout << 1 << "\n";
else if (n / 100 < n / 10 % 10)
cout << 2 << "\n";
else
cout << "==" << "\n";
cout << "c)";
if (n / 10 % 10 > n % 10)
cout << 2 << "\n";
else if (n / 10 % 10 < n % 10)
cout << 3 << "\n";
else
cout << "==" << "\n";
//system("pause");
}