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

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

можете помочь доделать остальные пункты? сделал первый пункт 1) вычислить значения 39 элементов одномерного целочисленного массива F в интервале (-10,10) с использованием генератора случайных чисел. вот остальные: 2) вычислить среднегеометрическое значение четных по значению элементов второй четверти массива; 3) определить значение самое близкое к заданному числу С среди положительных элементов всего массива; 4) упорядочить положительные элементы второй половины массива по убыванию модулей обратных значений.
program v7;
var
  f:array [0..1000] of real;
  i: Integer;
 
begin        ////////////////////////////////////////////////////// 1)
 
  Writeln;  // переход на новую строку
  Writeln ('1) Генерируем одномерный массив из 39 элемента в интервале (-10,10):');   //вывод текста
  Write('   ');
  randomize;                        // генерируем рандом
  for i:=1 to 39 do
  begin
     f[i]:=random(10)-10     ;       // генерируем массив
     Write(floattostr(f[i]));
     if i<>39 then Write(', ');     // записываем через запятую
  end;
  Writeln('.');   
  end.// в конце точка


textual

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

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.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

11   голосов, оценка 4.000 из 5

Источник
Похожие ответы