Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Сортировка записей

Автор: Ananas 7.05.2007 23:35

Задача такая: файл имеет структуру
время(5 позиций), пробел, аэродром посадки(3 позиции)
11:35 АП1
23:08 АП3
15:30 АП2
и т.д.
Так вот, всего в файле 10 записей. Надо считать каждую строку в отдельный элемент массива и отсортировать по убыванию времени методом пузырька. После этого вывести отсортированную таблицу (именно таблицу, с использованием символов аски кода). Есть такая идея, только не знаю как сделать: считываем строки в массив записей. При сортировке во времени удаляем двоеточие и оставшееся время преобразуем в число. Подскажите как

Автор: Артемий 7.05.2007 23:38

Ну так вот - ты начни делать задачу (можешь дать файл) и потом выложишь сюда,если проблемы будут!А там поможем...

Автор: volvo 7.05.2007 23:41

Цитата
При сортировке во времени удаляем двоеточие и оставшееся время преобразуем в число.
А зачем? Что, строки (вместе с двоеточием) нельзя отсортировать тем же пузырьком?

Автор: Артемий 7.05.2007 23:44

+ поиск (http://forum.pascal.net.ru/index.php?s=&showtopic=16289&view=findpost&p=95392)

Автор: Ananas 8.05.2007 0:04

2 VOLVO
А по какому признаку тогда?

Штука в том, что просто я в эту задачу сформулировал именно то что у меня не получается smile.gif На самом деле эта задача сложнее и больше (к ней документации листов 50).

Автор: volvo 8.05.2007 0:09

Если файл у тебя текстовый, и состоит из вот таких строк, как ты описываешь, то достаточно будет записать данные в массив ar: array[1 .. 10] of string;, и сделать:

  For i := 1 To n Do
For j := n DownTo i+1 Do
If copy(ar[j - 1], 1, 5) > copy(ar[j], 1, 5) Then Begin { сравниваем только ВРЕМЯ - первые 5 позиций строки }
T := ar[j - 1]; ar[j - 1] := ar[j]; ar[j] := T
End