• Помогите решить задачу. Необходимо использовать одномерный массив.

    Даны действительные числа a1,a2,...a n. Поменять местами первый наибольший элемент с последним наименьшим элементом.

Ответы 6

  • Для того сохранять, чтобы при каждом проходе по циклу не обращаться с выборкой к двум элементам массива. Лучше потратить 8 дополнительных байт памяти, чем 2*n раз обратиться к массиву. Напомню, что при обращении к массиву в Паскале проверяется допустимость значения индекса, затем вычисляется смещение относительно начала массива и уж потом формируется ссылка на адрес в памяти.
  • мне кажется что в школьной задаче удобочитаемость приоритетнее. Не микроконтроллеры в конце концов программируются, когда каждый байт памяти на счету.
    • Автор:

      lily52
    • 6 лет назад
    • 0
  • Это неверный подход. Из-за него потом люди отучаются строить эффективные алгоритмы, предпочитая везде метод грубой силы (брутфорс).
    • Автор:

      avahfrey
    • 6 лет назад
    • 0
  • Удобочитаемость - неверный подход? Это одно из первых чему учат молодого программиста в айтишной конторе. Наверное уже во всех используемых языках верхнего уровня работа с масивами оптимизирована и не нужны такие танцы с бубнами.
    • Автор:

      plutoqumu
    • 6 лет назад
    • 0
  • Значит, мы в разных конторах работаем. И давайте заканчивать спам тут.
  • const  n = 20;var  a: array[1..n] of real;  i, imax, imin: integer;  r, rmax, rmin:real;begin  Randomize;  Writeln('Элементы массива');  rmax:=-1; { заведомо меньше меньшего }  rmin:=100; { заведомо больше большего }  for i := 1 to n do  begin    r:=Random(10);    a[i]:=r;     Write(r,' ');    if rmax<r then begin rmax:=r; imax:=i end;    if rmin>=r then begin rmin:=r; imin:=i end  end;  Writeln;  { меняем местами и выводим результат }  a[imax]:=rmin; a[imin]:=rmax;  Writeln('Конечное состояние массива');  for i := 1 to n do Write(a[i],' ');  Writelnend.Тестовое решение:Элементы массива4 1 2 8 6 3 7 5 5 1 4 4 3 3 6 8 5 4 7 6 Конечное состояние массива4 1 2 1 6 3 7 5 5 8 4 4 3 3 6 8 5 4 7 6 Видно, что первая восьмерка поменялась местами с последней единицей.
    • Автор:

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

Войти через Google

или

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

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

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