СРОЧНО ПОМОГИТЕ ПОЖАЛУЙСТА!
В одномерном массиве, состоящем из 22 элементов целого типа (значения элементов массива задайте, используя генератор случайных чисел), вычислите: 1) минимальный элемент массива; 2) сумму элементов массива, расположенных между первым и последним положительными элементами. Преобразуйте массив таким образом, чтобы сначала располагались все здементы, равные нулю, а потом -- все остальные " найдите сулому пифр, пходящих в её текст, частное от деления факториала суммы цифр, на произведение цифр, входящих в текст.
НА ЛАЗАРУСЕ!! С точным решением пожалуйста
Ответы
Ответ:
Код на Lazarus:
program task;
{$APPTYPE CONSOLE}
uses
SysUtils, Math;
const
N = 22;
var
arr: array[1..N] of integer;
i, firstPos, lastPos: integer;
sumBetween: integer = 0;
minElem: integer;
temp: integer;
function factorial(n: integer): integer;
begin
if n <= 1 then
Result := 1
else
Result := n * factorial(n - 1);
end;
function getDigitsSum(n: integer): integer;
var
sum: integer = 0;
begin
while n <> 0 do
begin
sum := sum + (n mod 10);
n := n div 10;
end;
Result := sum;
end;
begin
Randomize;
// Заполнение массива случайными числами
for i := 1 to N do
arr[i] := Random(101) - 50;
// Поиск минимального элемента массива
minElem := arr[1];
for i := 2 to N do
minElem := Min(minElem, arr[i]);
// Поиск первого положительного элемента массива
firstPos := -1;
for i := 1 to N do
if arr[i] > 0 then
begin
firstPos := i;
Break;
end;
// Поиск последнего положительного элемента массива
lastPos := -1;
for i := N downto 1 do
if arr[i] > 0 then
begin
lastPos := i;
Break;
end;
// Сумма элементов массива, расположенных между первым и последним положительными элементами
if (firstPos <> -1) and (lastPos <> -1) then
for i := firstPos + 1 to lastPos - 1 do
sumBetween := sumBetween + arr[i];
// Преобразование массива
for i := 1 to N do
if arr[i] = 0 then
begin
temp := arr[i];
arr[i] := arr[firstPos];
arr[firstPos] := temp;
firstPos := firstPos + 1;
end;
// Вывод результатов
Writeln('Минимальный элемент массива: ', minElem);
Writeln('Сумма элементов массива, расположенных между первым и последним положительными элементами: ', sumBetween);
Writeln('Преобразованный массив:');
for i := 1 to N do
Write(arr[i], ' ');
// Вычисление сулумы пифр, пходящих в её текст, частное от деления факториала суммы цифр, на произведение цифр, входящих в текст
temp := factorial(getDigitsSum(sumBetween)) div (getDigitsSum(abs(result)) + 1);
Writeln('Сумма цифр: ', getDigitsSum(sumBetween));
Writeln('Произведение цифр: ', getDigitsSum(abs(result)) + 1);
Writeln('Результат: ', temp);
Readln;
end.