Сортировка по возрастанию даты в записях - Pascal ABC

  1. Свою летопись историк составил в таком формате: день(арабскими)/Месяц(Римскими)/Год(арабскими)/Описание(строка). Упорядочить все записи за возрастанием даты.


textual

Код к задаче: «Сортировка по возрастанию даты в записях - Pascal ABC»

program z1;
type Note = record
       iDay : integer;
       sMonat : string;
       iAge: integer;
       sData: string;
     end;
var 
  aChronicle : array[1..100] of Note;
  n : integer;
  
function GetMonat(a : Note) : integer;
begin
  if(a.sMonat = 'I') then GetMonat := 1
  else if(a.sMonat = 'II') then GetMonat := 2
  else if(a.sMonat = 'III') then GetMonat := 3
  else if(a.sMonat = 'IV') then GetMonat := 4
  else if(a.sMonat = 'V') then GetMonat := 5
  else if(a.sMonat = 'VI') then GetMonat := 6
  else if(a.sMonat = 'VII') then GetMonat := 7
  else if(a.sMonat = 'VIII') then GetMonat := 8
  else if(a.sMonat = 'IX') then GetMonat := 9
  else if(a.sMonat = 'X') then GetMonat := 10
  else if(a.sMonat = 'XI') then GetMonat := 11
  else if(a.sMonat = 'XII') then GetMonat := 12
  else GetMonat := 0;
end;
  
function Compare(a : Note; b : Note) : integer;
begin
  if(a.iAge < b.iAge) then Compare := 1
  else if(a.iAge > b.iAge) then Compare := -1
  else begin
    if(GetMonat(a) < GetMonat(b)) then Compare := 1
    else if(GetMonat(a) > GetMonat(b)) then Compare := -1
    else begin
      if(a.iDay < b.iDay) then Compare := 1
      else if(a.iDay > b.iDay) then Compare := -1
      else if(a.iDay < b.iDay) then Compare := 0;
    end;
  end;
end;
 
procedure qsort(low : integer; high : integer);
var i, j : integer;
    m, t : Note;
begin
  i := low; j := high; m := aChronicle[(i + j) shr 1];
  repeat
    while (Compare(aChronicle[i], m) = 1) do inc(i);    
    while (Compare(aChronicle[j], m) = -1) do dec(j);
    if (i <= j) then begin
      t := aChronicle[i]; aChronicle[i] := aChronicle[j]; aChronicle[j] := t;
      inc(i); dec(j);
    end;
  until (i > j);
  if (low < j) then qsort(low, j);
  if (i < high) then qsort(i, high);
end;
 
begin
  //чтение записей
  qsort(1, n); //n - число записей
  //вывод записей
end.

СДЕЛАЙТЕ РЕПОСТ

7   голосов, оценка 3.429 из 5



Похожие ответы
  1. Описать процедуру SqP(x1, y1, x2, y2, P, S), вычисляющую периметр P и площадь S прямоугольника со сторонами, параллельными осям координат, по координатам (x1, y1), (x2, y2) его противоположных вершин (x1, y1, x2, y2 — входные, P и S — выходные параметры вещественного типа). С помощью этой процедуры найти периметры и площади трех прямоугольников с противоположными вершинами. P.S. помогите пожалуйста это решить,заранее спасибо за помощь)

  1. Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами - не менее одного пробела, за последним словом - точка. Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству:слово симметрично

  1. Определите функцию, которая вычисляет и возвращает длину гипотенузы прямоугольного треугольника, две другие стороны x и y которого известны.Добавлено через 3 часа 0 минут Заранее спасибо за помощь)

  1. Заполнить числами, начиная с единицы, квадратный массив из NxN элементов «змейкой». Пример, для массива 4х4: Код 1 2 3 4 8 7 6 5 9 10 11 12 16 15 14 13 Реализовать ввод размерности с клавиатуры

  1. Здравствуйте, необходимо найти площадь прямоугольника по его вершинам, не могу понять в чем моя ошибка?

  1. Дана квадратная матрица порядка n. Обнулить элементы матрицы,лежащие одновременно выше главной и побочной диагоналей. Пожалуйста, СРОЧНО!!!

  1. Нужно переделать код так чтобы он при вводи четырех чисел определял совпадают ли в нем вторая и последняя.

  1. Здравствуйте! Помогите решить, заранее спасибо) В возрастающем порядке напечатать целые числа из диапазона 1.. 10000, представимые в виде n2 + m2, где n, m>=0

  1. Найти сумму целых положительных чисел из промежутка от А до B, кратных 4.(значения А и В вводятся с клавиатуры)

  1. Дано натуральное число, определите сколько раз в нём встретится последняя цифра. решение нужно через цикл goto