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


 
В этот день много лет назад...
18 декабря. В 1953 году (72 года назад) - Начинается закрытый суд над Лаврентием Берия. Специальное судебное присутствие возглавляет маршал Иван Конев. Сталин на процессе не упоминается, поэтому Берия, ссылаясь на его указания, говорит "инстанция"...
 
 

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