• Ребята, шарящие в паскале, пожалуйста, помогите решить задачу.
    Задан одномерный массив, заполненный случайными числами:
    1)Определить среднее геометрическое модулей минимального и максимального значений.
    2)Написать подпрограмму, которая определяет индекс минимального или
    максимального значения.
    3) Решить подзадачу 1 на основе подзадачи 2.

Ответы 6

  • 4)Процедура не возвращает значений, а вместо этого использует глобальные переменные imin и imax при вызове процедуры индекс текущего минимума(максимума) записывается в переменную imin (imax) (в функции используется временная локальная переменная index, которая вне функции недоступна). Поэтому определение переменных находится над функцией (если var ar: array of integer;
    • Автор:

      peter197
    • 5 лет назад
    • 0
  • n, imin, imax: integer; перенести под функцию возникнет ошибка. В итоге при вызове процедуры minOrMax(ar, n, true); переменной imin будет присвоен минимальный элемент массива, а при minOrMax(ar, n, false); - максимальный.
    • Автор:

      maia
    • 5 лет назад
    • 0
  • Я так ничего и не понял. Получается то, что я описал выше, неверно, да?
    • Автор:

      kingston
    • 5 лет назад
    • 0
  • Верно
    • Автор:

      andreiyrv
    • 5 лет назад
    • 0
  • А все абсолютно верно? Или нужно внести какие-то корректировки?)
  • 1)

    var

     ar: array of integer;

     n, min, max: integer;

    begin

     write('Введите размер массива:');

     read(n);

     setlength(ar, n);

     if (n > 0) then  

     begin

       ar[0] := random(-10, 10);

       min := ar[0];

       max := ar[0];

       write(ar[0]:4);

     end;

     for var i := 1 to n - 1 do

     begin

       ar[i] := random(-10, 10);

       if (ar[i] < min) then min := ar[i]

       else if (ar[i] > max) then max := ar[i];

       write(ar[i]:4);

     end;

     writeln(#13#10 + 'Среднее геометрическое модулей минимального и максимального значений = ',  

             sqrt(abs(max) * abs(min)):5:5);

    end.

    2)

    function minOrMax(ar: array of integer; size: integer; findMin: boolean): integer;

    var

     index: integer;

    begin

     index := 0;

     for var i := 1 to size - 1 do

       if (findMin) and (ar[i] < ar[index]) then index := i

       else if (not findMin) and (ar[i] > ar[index]) then index := i;

     result := index;

    end;

    3)

    function minOrMax(ar: array of integer; size: integer; findMin: boolean): integer;

    var

     index: integer;

    begin

     index := 0;

     for var i := 1 to size - 1 do

       if (findMin) and (ar[i] < ar[index]) then index := i

       else if (not findMin) and (ar[i] > ar[index]) then index := i;

     result := index;

    end;

    var

     ar: array of integer;

     n: integer;

    begin

     write('Введите размер массива:');

     read(n);

     setlength(ar, n);

     if (n > 0) then  

     begin

       ar[0] := random(-10, 10);

       write(ar[0]:4);

     end;

     for var i := 1 to n - 1 do

     begin

       ar[i] := random(-10, 10);

       write(ar[i]:4);

     end;

     writeln(#13#10 + 'Среднее геометрическое модулей минимального и максимального значений = ',  

             sqrt(abs(ar[minOrMax(ar, n, true)]) * abs(ar[minOrMax(ar, n, false)])):5:5);

    end.

    • Автор:

      midgelevs
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years