Представлений код - для розв’язку задачі сортування елементів масиву, який складається з 6 елементів, за зростанням. Завдання: змініть код таким чином, щоб сортування відбувалось за спаданням.
var
Form1: TForm1;
i:integer;
a: array [0..5] of integer=(4, 9, 2, 0, 1, 8);
procedure TForm1.Button1Click(Sender: TObject);
begin
for i:=0 to 5 do
memo1.lines[i]:=inttostr(a[i]);
end;
procedure TForm1.Button2Click(Sender: TObject);
var j, min, n, buf, imin : integer;
begin
n:=6;
for i := 0 to n-1 do
begin
min := a[i];
imin := i;
for j := i+1 to n do
begin
if a[j] < min then
begin
min := a[j];
imin := j;
end;
end;
buf:=a[i];
a[i]:=min;
a[imin] := buf;
end;
for i:= 1 to n do
Memo2.Lines[i] := IntToStr(a[i]);
end;
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]<=0) and (i<=n) do i:=i+1;
if i>n then begin
PartSum:=0;
exit
end;
i1:=i+1;
i:=n;
while (i>i1) and (a[i]<=0) do i:=i-1;
i2:=i-1;
if i2<=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->t>0);
Writeln('S=',a[i.First+1:i.Last].Sum);
a:=(a.Where(t->t=0)+a.Where(t->t<>0)).ToArray; a.Println
end.
- магнитные диски;
- магнитные барабаны - ранняя разновидность компьютерной памяти, широко использовавшаяся в 1950-1960. Изобретена Густавом Таушеком в 1932 в Австрии. В дальнейшем магнитный барабан был вытеснен памятью на магнитных сердечниках.
- дискеты - портативный магнитный носитель информации, используемый для многократной записи и хранения данных сравнительно небольшого объема. Запись и считывание осуществляется с специального устройства - дисковода;
- магнитные ленты - носитель магнитной записи, представляющий собой тонкую гибкую ленту, состоящую из основы и магнитного рабочего слоя;
- оптические диски - носитель информации в виде диска с отверстием в центре, информация с которого считывается с лазера. Изначально компакт-диск был создан для цифрового хранения аудио, однако в настоящее время широко используется как устройство хранения данных широкого назначения;
- flash память - разновидность твердотельной полупроводниковой энергонезависимой перезаписываемой памяти. Флэш-память может быть прочитана сколько угодно раз, но писать в такую память можно лишь ограниченное число раз (обычно около 10 тысяч раз). Стирание происходит участками, поэтому нельзя изменить один бит или байт без перезаписи всего участка.