IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Сортировка методом «пузырька»
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Женский

Репутация: -  0  +


Всю программу скидывать не буду, смысл задачи в том, что нужно упорядочить записи по датам дней рождения. Что-то у меня не получает. При компилировании выдает "Операция '>' не применима к типу 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;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Да, непременима.
Но сравнение сложных типов можно реализовать отдельной функцией. Например, для твоего случая

{возвращает 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

Теперь дата это не набор чисел а одно число - бери и сравнивай
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 4.05.2024 11:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name