Delphi-Help

Главная Статьи Массивы Задача № 235 на Pascal

Задача № 235 на Pascal

Оцените материал
(1 Голосовать)


Задача № 235 на 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 условия.

Прочитано 5903 раз
Другие материалы в этой категории: « Задача № 234 на Pascal Задача № 238 на Pascal »

Авторизация



Счетчики