Вычислить значения 39 элементов одномерного целочисленного массива F в заданном интервале - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

можете помочь доделать остальные пункты? сделал первый пункт 1) вычислить значения 39 элементов одномерного целочисленного массива F в интервале (-10,10) с использованием генератора случайных чисел. вот остальные: 2) вычислить среднегеометрическое значение четных по значению элементов второй четверти массива; 3) определить значение самое близкое к заданному числу С среди положительных элементов всего массива; 4) упорядочить положительные элементы второй половины массива по убыванию модулей обратных значений.

Решение задачи: «Вычислить значения 39 элементов одномерного целочисленного массива F в заданном интервале»

textual
Листинг программы
const n = 39;
var f: array [0..n] of integer;
    i, j, k, p: integer;
    sg, c: real;
begin
  randomize;
  Writeln ('1) Генерируем одномерный массив из ', n + 1, ' элементов в интервале (-10, 10):');
  for i := 0 to n do
    begin
       f[i] := -10 + random(21);
       write(f[i]:4)
    end;
  writeln;
  writeln('2) Вычисляем среднее геометрическое чётных по значению элементов 2 четверти:');
  sg := 1;
  p := 0;
  k := (n + 1) div 4;
  for i := k to k * 2 - 1 do
    if not odd(f[i])
      then begin
        sg := sg * f[i];
        inc(p);
      end;
  if p = 0
    then writeln('Не найдено чётных по значению элементов во 2 четверти массива')
    else if not odd(p) and (sg < 0)
      then begin
        writeln('Среднее геометрическое не вычислено, ошибка:');
        writeln('попытка вычисления корня степени ', p, ' из числа ', sg:0:0)
      end
      else begin
        if sg > 0
          then sg := exp(ln(sg) / p)
          else if sg < 0
            then sg := -exp(ln(-sg) / p);
        writeln('Среднее геометрическое чётных по значению элементов 2 четверти массива:');
        writeln(sg:0:10)
      end;
  writeln;
  writeln('3) Определяем ближайшее к числу С значение среди положительных элементов');
  p := 0;
  write('C = ');
  readln(c);
  for i := 0 to n do
    if f[i] > 0
      then if p = 0
        then p := i
        else if abs(f[i] - c) < abs(f[p] - c)
          then p := i;
  if p = 0
    then writeln('Положительных элементов массива не найдено')
    else writeln('Ближайшее к числу C значение среди положительных элементов: ', f[p]);
  writeln;
  writeln('4) упорядочиваем положительные элементы 2 половины массива');
  writeln('   по убыванию модулей обратных значений');
  for i := (n + 1) div 2 to n - 1 do
    if f[i] > 0
      then begin
        k := i;
        for j := i + 1 to n do if (f[j] > 0) and (abs(1 / f[k]) < abs(1 / f[j])) then k := j;
        if k > i
          then begin
            p := f[i];
            f[i] := f[k];
            f[k] := p
          end
      end;
  writeln('Упорядоченный массив:');
  for i := 0 to n do write(f[i]:4);
  writeln;
  write('Нажмите клавишу <Enter> для выхода из программы');
  readln
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы