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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2017, 14:47   #1
C_i_K_a_D_a
Пользователь
 
Регистрация: 07.02.2017
Сообщений: 15
По умолчанию Pascal ABC.net Сравнение соседних элементов массива

Помогите пожалуйста! (желательно с использование процедур)
Слева направо по порядку сравниваются все соседние элементы и, если
первый элемент в паре оказался больше второго , элементы меняются местами .
В результате выполнения программы должно быть 20 строк (в которой элементы постепенно сдвигаются большие - вправо, меньшие - влево )

Код:
Program sdvig_chisel;

uses Crt;

const
    N = 20;

type 
    mas = array [1..N] of integer;

var
  a : mas;
  i :integer;

Procedure sdvig;
  var
    i , x :integer;
  begin  
      while i <> N do
          begin
              if a[i] > a [i + 1] then
                 begin
                     a[i] := x;
                     a[i] := a[i + 1];
                     a[i + 1] := x;
                      write(a[i]:5);
                 end;
          i := i + 2;         
    end;
end;    
begin 
    Randomize;
    for i := 1 to N do
       begin
           a[i] := -20 + random(41);
           write(a[i]:5)
       end;
    readln;   
    sdvig;   
    
end.
Изображения
Тип файла: jpg Безымянный.jpg (52.5 Кб, 126 просмотров)

Последний раз редактировалось Аватар; 23.02.2017 в 15:07.
C_i_K_a_D_a вне форума Ответить с цитированием
Старый 23.02.2017, 15:24   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если речь о сортировке таким способом то
Код:
procedure Sdvig;
var i,x: Integer;
begin
  i:=1;
  while i<N do begin
    if a[i]>a[i+1] then begin
      x:=a[i];
      a[i]:=a[i+1];
      a[i+1]:=x;
      if i>1 then Dec(i,2);
    end;
    Inc(i);
  end;
  for i:=1 to N do write(a[i]:5);
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.02.2017, 18:18   #3
C_i_K_a_D_a
Пользователь
 
Регистрация: 07.02.2017
Сообщений: 15
По умолчанию

Спасибо! а что значит Dec " (i,2) " ?
C_i_K_a_D_a вне форума Ответить с цитированием
Старый 24.02.2017, 19:31   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Dec(i,2)
это тоже самое, что
Код:
i:=i-2;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal ABC.net Сдвиг элементов массива на одну позицию влево C_i_K_a_D_a Помощь студентам 4 21.02.2017 21:00
Осуществить циклический сдвиг элементов массива влево на К позиций (Delphi) ALEXandr20333 Помощь студентам 8 13.02.2014 23:04
Передвинуть массив циклически влево на одну позицию Proskurina Помощь студентам 1 04.10.2012 20:32
Сдвиг элементов массива на 1 влево. Вывести матрицу в Memo Abrokadawr Помощь студентам 3 04.11.2011 23:13