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

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

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

 
 Ответить  Открыть новую тему 
> Записи(структуры), Помогите решить задачу
сообщение
Сообщение #1


Гость






к завтрашнему дню надо решить эту задачу 'Дан массив записей, содержащих дату (число, месяц, год) и время (час, минута, секунда). Упорядочить этот массив в порядке «возрастания», т.е. от более ранних значений к более поздним. ' Но я даже толком в смысл задачи не въехал. Помогите чем можете. заранее ОгРоМнОе спасибо.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
я даже толком в смысл задачи не въехал
Смысл задания - следующий... У тебя есть массив, содержащий определенные структуры... Например, вот такой:
(4-apr-1990;11:00:00), (5-jan-1975;14:11:30), ... ну, и так далее, неважно что там дальше... Те две структуры, которые я привел, не упорядочены по возрастанию... Потому, что дата, содержащаяся во второй, "раньше" даты, содержашейся в первой...

Теперь, как делать... Выбираешь любой метод сортировки отсюда: Методы сортировок
и сожешь сортировать. За одним исключением: сначала надо кое-что изменить. Возьмем, для примера, метод "пузырька", как самый простой и понятный:

Type
arrType = Array[1 .. n] Of Integer;

Procedure Bubble(Var ar: arrType; n: integer);
Var i, j, T: Integer;
Begin
For i := 1 To n Do
For j := n DownTo i+1 Do
If ar[Pred(j)] > ar[j] Then { < }
Begin
T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T
End
End;
Он почти подходит для решения твоей задачи... Почти - потому что не предназначен он для сортировки записей, он сортирует целые числа... Еще один препон - нельзя сравнивать между собой записи, ибо это НЕвстроенные типа Паскаля, и он про твой тип ничего не знает. Но если сделать так:
Type
myRec = Record { Здесь - те поля, которые тебе нужны } End;
arrType = Array[1 .. n] Of myRec;

Function isMore(r1, r2: myRec): boolean;
begin
{
Функция сравнивает содержимое полей R1 и R2, и возвращает True, если дата/время, записанные
в R1 больше (позже) даты/времени, записанного в R2; иначе возвращается False

Как именно сравнивать записи - попробуй решить для себя сам... Можно, конечно,
сделать перебор по всем полям, начиная с года, потом месяц, день, ... Но проще,
наверное, будет перевести дату в какое-то универсальное число, например, количество
секунд до записанной даты, прошедшее, скажем, с 1 января 1900 года, и сравнивать эти секунды
}
end;

Procedure Bubble(Var ar: arrType; n: integer);
Var
i, j: Integer;
T: myRec;
Begin
For i := 1 To n Do
For j := n DownTo i+1 Do
If isMore(ar[Pred(j)], ar[j]) Then Begin
T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T
End
End;
, то все заработает...

Пробуй, я написал тебе все, что нужно для решения...
 К началу страницы 
+ Ответить 

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

 





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