Написать программу на Pascal использую процедуры и функции1. Вычислить сумму частей
Написать программку на Pascal использую процедуры и функции
1. Вычислить сумму элементов массива, расположенных меж первым
и заключительным положительными элементами.
2. Преобразовать массив таким образом, чтоб поначалу размещались
элементы, равные 0, а потом остальные
1 ответ
Луговова Дарина
Const
nn=100; // максимальный размер массива
type
tA=array[1..nn] of integer;
procedure FillArray(n:integer; var a:tA);
var
i:integer;
begin
Randomize;
for i:=1 to n do a[i]:=Random(21)-10
end;
procedure PrintArray(n:integer; a:tA);
var
i:integer;
begin
for i:=1 to n do Write(a[i],' ');
Writeln
end;
function PartSum(n:integer; a:tA):integer;
var
i,i1,i2,s:integer;
begin
i:=1;
while (a[i]lt;=0) and (ilt;=n) do i:=i+1;
if igt;n then begin
PartSum:=0;
exit
end;
i1:=i+1;
i:=n;
while (igt;i1) and (a[i]lt;=0) do i:=i-1;
i2:=i-1;
if i2lt;=i1 then PartSum:=0
else begin
s:=0;
for i:=i1 to i2 do s:=s+a[i]
end;
PartSum:=s
end;
procedure SwapZeros(n:integer; var a:tA);
var
i,j:integer;
begin
for i:=1 to n do
if a[i]=0 then begin
for j:=i downto 2 do a[j]:=a[j-1];
a[1]:=0;
end;
end;
var
n:integer;
a:tA;
begin
Write('n= '); Read(n);
FillArray(n,a);
PrintArray(n,a);
Writeln('S=',PartSum(n,a));
SwapZeros(n,a);
PrintArray(n,a)
end.
Пример
n= 21
-3 1 4 -2 10 -5 -7 7 -5 -10 -2 5 0 -6 3 5 -7 0 -9 6 4
S=-13
0 0 -3 1 4 -2 10 -5 -7 7 -5 -10 -2 5 -6 3 5 -7 -9 6 4
В качестве бонуса - современное решение без всех этих долгописаний.
// PascalABC.NET 3.3, сборка 1634 от 14.02.2018
// Внимание! Если программка не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-10,10); a.Println;
var i:=a.IndexesOf(t-gt;tgt;0);
Writeln('S=',a[i.First+1:i.Last].Sum);
a:=(a.Where(t-gt;t=0)+a.Where(t-gt;tlt;gt;0)).ToArray; a.Println
end.
nn=100; // максимальный размер массива
type
tA=array[1..nn] of integer;
procedure FillArray(n:integer; var a:tA);
var
i:integer;
begin
Randomize;
for i:=1 to n do a[i]:=Random(21)-10
end;
procedure PrintArray(n:integer; a:tA);
var
i:integer;
begin
for i:=1 to n do Write(a[i],' ');
Writeln
end;
function PartSum(n:integer; a:tA):integer;
var
i,i1,i2,s:integer;
begin
i:=1;
while (a[i]lt;=0) and (ilt;=n) do i:=i+1;
if igt;n then begin
PartSum:=0;
exit
end;
i1:=i+1;
i:=n;
while (igt;i1) and (a[i]lt;=0) do i:=i-1;
i2:=i-1;
if i2lt;=i1 then PartSum:=0
else begin
s:=0;
for i:=i1 to i2 do s:=s+a[i]
end;
PartSum:=s
end;
procedure SwapZeros(n:integer; var a:tA);
var
i,j:integer;
begin
for i:=1 to n do
if a[i]=0 then begin
for j:=i downto 2 do a[j]:=a[j-1];
a[1]:=0;
end;
end;
var
n:integer;
a:tA;
begin
Write('n= '); Read(n);
FillArray(n,a);
PrintArray(n,a);
Writeln('S=',PartSum(n,a));
SwapZeros(n,a);
PrintArray(n,a)
end.
Пример
n= 21
-3 1 4 -2 10 -5 -7 7 -5 -10 -2 5 0 -6 3 5 -7 0 -9 6 4
S=-13
0 0 -3 1 4 -2 10 -5 -7 7 -5 -10 -2 5 -6 3 5 -7 -9 6 4
В качестве бонуса - современное решение без всех этих долгописаний.
// PascalABC.NET 3.3, сборка 1634 от 14.02.2018
// Внимание! Если программка не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-10,10); a.Println;
var i:=a.IndexesOf(t-gt;tgt;0);
Writeln('S=',a[i.First+1:i.Last].Sum);
a:=(a.Where(t-gt;t=0)+a.Where(t-gt;tlt;gt;0)).ToArray; a.Println
end.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов