HOME ПРИМЕРЫ THANKS НОВИЧКАМ ДОКИ LINKS JavaScript Mail


 
В этот день много лет назад...
1 мая. В 1961 году (56 лет назад) - Фидель Кастро объявляет, что на Кубе отныне не будет выборов.
 
 

Turbo Pascal Examples.
Сортировка

Графика:
Построение графика функции
Прыгающий по экрану мячик.
Качание маятника.
Вложенные цветные круги.
Броуновское движение. Использование объектов.
Матрицы и массивы:
Сортировка элементов массива.
Удаление одинаковых элементов.
Простой пример на поворот матрицы.
Сортировка методом Шелла. +функции измерения временных интервалов.
Проверка выпуклости многоугольника.
Перемоножение матриц
Вычисление определителя матрицы. Рекурсия.
Нахождение обратной матрицы.
Задача об автостоянке.
Рекурсия. Подземелье сокровищ.
Численные методы:
Задачка на определение угла между стрелками часов.
Проверка на принадлежность точки многоугольнику.
Нахождение точки пересечения двух отрезков на плоскости.
Сортировка методом Шелла. +функции измерения временных интервалов.
Сортировка методом "пузырька". Пример на динамические структуры данных. Связанные списки.
Нахождение корня функции методом половинного деления.
Вычисление арккосинуса
Нахождение суммы цифр натурального числа.
Работа с фалами:
Рекурсивное сканирование директорий.
Работа со строками:
Работа со словами в предложении с разделителями.
Простейший синтаксический анализатор для распознавания и вычисления многчлена.
Синтаксический анализатор для распознавания и вычисления многчлена.
Работа со строками: смена кодировки, удаление тегов из HTML текста, обработка
Переименование файлов из кириллицы в латиницу.
Выдача контекстной подсказки.
Частотный словарь символов.
Подсчет повторяющихся символов в строке.
Ссылочные переменные:
Моделирование стека.
Пасьянс "Косынка".
Игры:
Пасьянс "Косынка".
Игра "Питон"
Игра "Анацефал". Пример использования объектов.
Игра "Минное поле"
Большие проекты:
Электронная картотека (без исходника)


 
Сортировка элементов массива
Дана матрица A(M,N). Отсортировать четные столбцы по убыванию, а нечетные по возрастанию.

Будем использовать простейший метод "пузырька". (Более быстрый метод, метод Шелла, описан в соответствующем примере.) Сначала напишем процедуру, сортирующую столбец по возрастанию. Чтобы не возиться с индексами и не писать еще одни метод для сортировки по убыванию, каждый четный столбец умножим перед сортировкой на -1, а после сортировки умножим на -1 еще раз, вернув значения в исходное состояние. Для инициализации массива и для его печати создадим еще по одной процедуре. Обратите внимание, что массив передается в процедуры не как формальный, а как фактический параметр и все операции происходят с самим массивом, а не с его копией (см. здесь о формальных и фактических параметрах).


uses crt;
const
  N = 20;
  M = 30;
type
  arr2 = array[1..M,1..N] of integer;
procedure createArr2(var a:arr2;ma,na:integer);
var i,j:integer;
  begin
  randomize;
  for i:=1 to ma do
  for j:=1 to na do
    a[i,j]:=random(25);
  end;
procedure printArr2(var a:arr2;ma,na:integer);
var i,j:integer;
  begin
  for i:=1 to ma do
    begin
    for j:=1 to na do
      write(a[i,j]:3);
    writeln;
    end;
  end;
{ Multiply column 'col' in array a by r }
procedure multArr2(var a:arr2;ma,col,r:integer);
var i,j:integer;
  begin
  for i:=1 to ma do
    a[i,col]:=r*a[i,col];
  end;
{ Sort column 'col' in array a acs }
procedure sortArray(var a:arr2;ma,col:integer);
var i,j,t:integer;
  begin
  for i:=1 to ma do
  for j:=1 to ma-i do
    if (a[j,col]>a[j+1,col]) then
      begin
      t:=a[j,col];
      a[j,col]:=a[j+1,col];
      a[j+1,col]:=t;
      end;
  end;
{**********************}
var b:arr2;
    n1,m1,k:integer;
begin { main }
n1:=5;
m1:=6;
createArr2(b,m1,n1);
writeln('Initial Array:');
printArr2(b,m1,n1);

for k:=1 to m1 do
  if ((k mod 2) = 0) then
     multArr2(b,m1,k,-1);

for k:=1 to m1 do
  sortArray(b,m1,k);

for k:=1 to m1 do
  if ((k mod 2) = 0) then
     multArr2(b,m1,k,-1);

writeln('Sorted Array:');
printArr2(b,m1,n1);
end.




 

 

 

 

 

 

 


HOME