Вопрос по информатике
Анонимный
1 год назад

СРОЧНО ПОМОГИТЕ ПОЖАЛУЙСТА!
В одномерном массиве, состоящем из 22 элементов целого типа (значения элементов массива задайте, используя генератор случайных чисел), вычислите: 1) минимальный элемент массива; 2) сумму элементов массива, расположенных между первым и последним положительными элементами. Преобразуйте массив таким образом, чтобы сначала располагались все здементы, равные нулю, а потом -- все остальные " найдите сулому пифр, пходящих в её текст, частное от деления факториала суммы цифр, на произведение цифр, входящих в текст.
НА ЛАЗАРУСЕ!! С точным решением пожалуйста

Ответы 1

Ответ:

Код на 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.

Премиум статус
Получайте самые быстрые
ответы на свои вопросы
У вас остались
вопросы?