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

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

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

 
 Ответить  Открыть новую тему 
> Сортировка методом «пузырька»
Дарина
сообщение 25.05.2014 17:37
Сообщение #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 
 К началу страницы 
+ Ответить 
Федосеев Павел
сообщение 26.05.2014 18:50
Сообщение #2


Бывалый
***

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

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


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

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

 



- Текстовая версия 6.06.2024 1:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"