Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2012, 21:07   #1
xEk
Пользователь
 
Регистрация: 23.11.2011
Сообщений: 19
Вопрос Как переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами?

Подскажите как реализовать перестановку элементов массива в заданом промежутке? Минимум и максимум массива я нашел, а как переставить элементы не знаю... Язык програмирования С.

Последний раз редактировалось xEk; 09.05.2012 в 21:24.
xEk вне форума Ответить с цитированием
Старый 09.05.2012, 21:20   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
uses
  crt;

const
  n = 10;

var
  a: array[1..n] of integer;
  i: integer;
  posmax, posmin: integer;
  k1, k2: integer;
  tmp: integer;

function min(a, b: integer): integer;
begin
  if a > b then
    min := b
  else
    min := a;
end;

function max(a, b: integer): integer;
begin
  if a > b then
    max := a
  else
    max := b;
end;

begin
  randomize;
  for i := 1 to n do
    a[i] := random(101) - 50;
  for i := 1 to n do
    write(a[i]:4, ' ');
  posmax := 1;
  posmin := 1;
  for i := 2 to n do
  begin
    if a[i] > a[posmax] then
      posmax := i
    else
    if a[i] < a[posmin] then
      posmin := i;
  end;
  k1 := min(posmax, posmin) + 1;
  k2 := max(posmax, posmin) - 1;
  for i := k1 to (k1 + k2) div 2 do
  begin
    tmp := a[i];
    a[i] := a[k1 + k2 - i];
    a[k1 + k2 - i] := tmp;
  end;
  writeln;
  for i := 1 to n do
    write(a[i]:4, ' ');
  readln;
end.
Перестановку осуществляет:
Код:
  k1 := min(posmax, posmin) + 1;
  k2 := max(posmax, posmin) - 1;
  for i := k1 to (k1 + k2) div 2 do
  begin
    tmp := a[i];
    a[i] := a[k1 + k2 - i];
    a[k1 + k2 - i] := tmp;
  end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 09.05.2012 в 21:28.
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переставить элементы массива в обратном порядке Mayers Общие вопросы C/C++ 3 06.05.2012 12:15
Удалить элементы в массиве, стоящие между максимальным и минимальным элементами Tkas Помощь студентам 0 04.03.2012 16:50
Является ли последовательность арифметической, заключенной между минимальным и максимальным элементами NeRRouZ Помощь студентам 2 12.11.2011 18:38
Посчитать произведение эл-ов массива, расположенных между максимальным и минимальными элементами. Fri Помощь студентам 4 23.10.2011 20:35
как реализовать функцию для того что бы скопировать элементы одного массива во второй в обратном порядке mansp Общие вопросы C/C++ 8 28.10.2010 15:48