Помощь - Поиск - Пользователи - Календарь
Полная версия: Сортировка методом «пузырька»
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Дарина
Всю программу скидывать не буду, смысл задачи в том, что нужно упорядочить записи по датам дней рождения. Что-то у меня не получает. При компилировании выдает "Операция '>' не применима к типу array [1..3] of integer". Помогите, пожалуйста)



Код

inf: array [1..8] of note;
dt: array[1..3] of integer;
i, j: integer; s: string [10];




for i:=1 to n-1 do {Сортировка по возрастанию}
  for j:=i+1 to n do
   if inf[i].dt > inf[j].dt then
   begin
    s:= inf[i].dt;
inf[i].dt:= inf[j].dt;
inf[j].dt:= s;
   end;
Федосеев Павел
Да, непременима.
Но сравнение сложных типов можно реализовать отдельной функцией. Например, для твоего случая

{возвращает 0 если массивы одинаковы, 1 если a>b и -1 если a<b}
function CmpArrayInt(const a, b: array of integer): integer;
begin
.......................
end;

....................
if CmpArrayInt(inf[i].dt, inf[j].dt)>0 then
....................

Но в данном конкретном случае дату можно заменить на число и сравнивать два целых числа.
Вот смотри, берём дату YYYY MM DD - массив из трёх чисел - и превращаем в одно число
DD+100*MM+10000*YYYY
в твоём случае
   if inf[i].dt > inf[j].dt then
превращается в
   if (inf[i].dt[1]+inf[i].dt[2]*100+inf[i].dt[3]*10000) > (inf[j].dt[1]+inf[j].dt[2]*100+inf[j].dt[3]*10000) then

Теперь дата это не набор чисел а одно число - бери и сравнивай
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.