Изучение языка программирования
Турбо Паскаль (Turbo Pascal)

На этом сайте можно: скачать среду программирвания Турбо Паскаль, изучить язык программирования Турбо Паскаль, а так же скачать программы на языке Турбо Паскаль!
Решенные задачи на языке Паскаль



Условие задачи - из "гостевой книги".

Составить программу для сортировки массива А из 10 элементов по следующему принципу: четные элементы по возрстанию, а не четные по убыванию.

VAR
  a:array[1..10]of integer;
  i,i1,tmp:integer;

BEGIN
{1). Создание исходного массива}
  writeln('Исходный массив:');
  randomize;
  for i:=1 to 10 do
    begin
    a[i]:=random(9);
    write('  ',a[i]);
    end;
  writeln;

{2). Сортировка исходного массива}
  for i:=1 to 10-1 do
  for i1:=i+1 to 10 do
    BEGIN
    if (a[i]>a[i1])and(a[i1] mod 2=0)and(a[i] mod 2=0) then
      begin
      tmp:=a[i];
      a[i]:=a[i1];
      a[i1]:=tmp;
      end;
    if (a[i]<a[i1])and(a[i1] mod 2=1)and(a[i] mod 2=1) then
      begin
      tmp:=a[i];
      a[i]:=a[i1];
      a[i1]:=tmp;
      end;
    END;

{3). Вывод отсортированного массива}
  writeln;
  writeln('Полученный массив:');
  for i:=1 to 10 do write('  ',a[i]);
END.
* переменная a - исходный массив с числом элементов 10
* переменные i, i1 - переменные для цикла
* переменная tmp - для временного хранения одного элемента массива.

Решение этой задачи я разбил на 3 части: создание исходного массива, сортировка исходного массива, вывод отсортированного массива.

Первая и третья части очень просты и могут быть записаны по разному. А вот о третьей части я расскажу.

Сортировка исходного массива
Для сортировки массивов разработано несколько методов. Метод сортировки, который используется в этой программе называется "Линейная сортировка" или "Сортировка отбором". Он заключается в том, что последовательно берется один элемент и сравнивается с оставшимися элементами массива. И в зависимости от условия сравнения этих элементов они меняются друг с другом местами.

Например: 2,5,1 - нужно отсортировать по возрастанию.
Используя данный метод сравниваем 1-й элемент со 2-м и 3-м элементами. Выясняем, что 2>1, поэтому меняем их местами, получим: 1,5,2. Теперь сравниваем 2-й элемент с 3-м элементом. Выясняем, что 5>2, поэтому меняем их местами и получим результат такой сортировки: 1,2,5.
Теперь когда знаем как сортировать элементы массива, можно писать программу для сортировки. Она будет выглядеть таким образом:
  ...
  for i:=1 to 10-1 do
  for i1:=i+1 to 10 do
    BEGIN
    if (a[i]>a[i1]) then
      begin
      tmp:=a[i];
      a[i]:=a[i1];
      a[i1]:=tmp;
      end;
    END;
  ...
При условии a[i]>a[i1] - эти элементы поменяются друг с другом местами.
Вот эта часть программы будет сортировать массив по возрастанию. Другую часть программы для сортировки по убыванию просто написать - заменив знак > на <.
Теперь для того чтобы отсортировать четные элементы массива нужно добавить к уже готовой части для сортировки, еще 2 условия. Первое условие, что сравниваемый элемент - четный. Ворое условие, что оставшиеся элементы которые будут сравниваться с тем - тоже четные.
Для не четных элементов нужно добавить анологичные 2 условия.