Составить программу для решения задачи. Даны число, натуральные числа a и n. Вычислить: сумму всех натуральных чисел больших а и не превосходящих n Задачу запишите в окошко, либо прикрепите скриншот с паскаля.
// PascalABC.NET 3.0, сборка 1088 function InitA(n:integer):array of integer; begin Result:=ArrRandom(n,-31,45) end;
procedure GetA(var a:array of integer); begin a:=InitA(ReadInteger('Количество элементов в массиве А: ')); end;
procedure PutM(c:char; a:array of integer); begin Writeln('*** Массив '+c+'[',a.Length,'] ***',#13#10,a); end;
function FormB(a:array of integer):array of integer; begin Result:=Range(0,a.Length-1,2).Select(x->a[x]).ToArray end;
function MinEl(a:array of integer):integer; begin Result:=a.Min end;
begin var mA:array of integer; GetA(mA); PutM('A',mA); var mB:=FormB(mA); PutM('B',mB); Writeln('Минимальный элемент в массиве В равен ',MinEl(mB)) end.
Тестовое решение: Количество элементов в массиве А: 15 *** Массив A[15] *** [-22,0,-9,17,14,3,38,-18,-28,-17,28,13,1,1,26] *** Массив B[8] *** [-22,-9,14,38,-28,28,1,26] Минимальный элемент в массиве В равен -28
После выполнения шага 1 на столе лежит яблоко, которое достали из корзины первым, а вторая корзина пуста. После каждого выполнения шага 2 большее яблоко перемещается в корзину, а меньшее остается на столе. В результате на столе окажется самое маленькое яблоко.
При обосновании корректности циклических алгоритмов полезно использовать понятие инварианта цикла. В случае приведенного алгоритма инвариантом цикла является такое условие «лежащее на столе яблоко — самое маленькое из всех взятых до сих пор». В начале алгоритма условие очевидно выполняется (любое яблоко удовлетворяет этому условию). Условие остается истинным на каждом шаге в соответствии с приведенными правилами. Таким образом, в конце алгоритма, когда все яблоки взяты, получим самое маленькое яблоко из всех.
function InitA(n:integer):array of integer;
begin
Result:=ArrRandom(n,-31,45)
end;
procedure GetA(var a:array of integer);
begin
a:=InitA(ReadInteger('Количество элементов в массиве А: '));
end;
procedure PutM(c:char; a:array of integer);
begin
Writeln('*** Массив '+c+'[',a.Length,'] ***',#13#10,a);
end;
function FormB(a:array of integer):array of integer;
begin
Result:=Range(0,a.Length-1,2).Select(x->a[x]).ToArray
end;
function MinEl(a:array of integer):integer;
begin
Result:=a.Min
end;
begin
var mA:array of integer;
GetA(mA); PutM('A',mA);
var mB:=FormB(mA); PutM('B',mB);
Writeln('Минимальный элемент в массиве В равен ',MinEl(mB))
end.
Тестовое решение:
Количество элементов в массиве А: 15
*** Массив A[15] ***
[-22,0,-9,17,14,3,38,-18,-28,-17,28,13,1,1,26]
*** Массив B[8] ***
[-22,-9,14,38,-28,28,1,26]
Минимальный элемент в массиве В равен -28
После выполнения шага 1 на столе лежит яблоко, которое достали из корзины первым, а вторая корзина пуста. После каждого выполнения шага 2 большее яблоко перемещается в корзину, а меньшее остается на столе. В результате на столе окажется самое маленькое яблоко.
При обосновании корректности циклических алгоритмов полезно использовать понятие инварианта цикла. В случае приведенного алгоритма инвариантом цикла является такое условие «лежащее на столе яблоко — самое маленькое из всех взятых до сих пор». В начале алгоритма условие очевидно выполняется (любое яблоко удовлетворяет этому условию). Условие остается истинным на каждом шаге в соответствии с приведенными правилами. Таким образом, в конце алгоритма, когда все яблоки взяты, получим самое маленькое яблоко из всех.