Skip to main content
Аватар пользователя Axel
Не в сети
Гражданин
Зарегистрирован: 05.11.2005
Сообщения: 1023
Баллы: 1086
Pascal

a) Создать типизированный файл, содержащий сведения о личной коллекции книголюба: шифр книги, автор, название, год издания, местоположение (номер шкафа, стеллажа и т.п.), упорядоченных по алфавиту.
б) Добавить в файл информацию о новых книгах таким образом, чтобы упорядоченность не нарушилась.

Напишите, пожалуйста, алгоритм упорядочивания по алфавиту. И под буквой б.
И ещё вопрос: как можно выйти из цикла при нажатии определённой комбинации кнопок(наприме:Ctrl+z)?

Аватар пользователя _Dm_
Не в сети
Новенький
Зарегистрирован: 29.12.2006
Сообщения: 61
Баллы: 61
Pascal

Из цикла вроде бы D+ctrl. Ты пишешь на Турбо Паскале чтоле? Smile

Аватар пользователя m1cr0sh
Не в сети
Студент
Зарегистрирован: 01.12.2006
Сообщения: 842
Баллы: 925
Pascal

как можно выйти из цикла при нажатии определённой комбинации кнопок(без например!))?

Определить нажатие клавиши во время выполнения цикла

procedure TForm1.Button1Click(Sender: TObject);<br />
 var<br />
   LoopAborted: Boolean;<br />
   i: Integer;<br />
 begin<br />
   LoopAborted := False;<br />
   i := 0;<br />
   repeat<br />
     // Your Code...<br />
    Caption := IntToStr(i);<br />
     Application.ProcessMessages;</p>
<p>     if GetKeyState(VK_Escape) and 128 = 128 then<br />
     begin<br />
       LoopAborted := True;<br />
       Break;<br />
     end;</p>
<p>     Inc(i);<br />
   until i = 100000;<br />
   if LoopAborted then<br />
     ShowMessage('User has aborted the loop!');<br />
 end;

Автор: http://www.swissdelphicenter.ch

Аватар пользователя Axel
Не в сети
Гражданин
Зарегистрирован: 05.11.2005
Сообщения: 1023
Баллы: 1086
Pascal

_Dm_, типа того.
Спасибо, что написали как выйти из цикла. Но больше меня интересует, как упорядочить по алфавиту названия...

Аватар пользователя Auto11RUS
Не в сети
Активист
Зарегистрирован: 27.09.2005
Сообщения: 2062
Баллы: 2285
Pascal

А не проще готовенькое попросить у предыдуших курсов?!

Аватар пользователя Axel
Не в сети
Гражданин
Зарегистрирован: 05.11.2005
Сообщения: 1023
Баллы: 1086
Pascal

я сам хочу понимать. Тем более не все задания похожи на те, что были у предыдущих курсов.

Аватар пользователя забыл_пароль
Не в сети
Гражданин
Зарегистрирован: 29.10.2005
Сообщения: 1414
Баллы: 1427
Pascal

"Axel" пишет:

a) Создать типизированный файл, содержащий сведения о личной коллекции книголюба: шифр книги, автор, название, год издания, местоположение (номер шкафа, стеллажа и т.п.), упорядоченных по алфавиту.
б) Добавить в файл информацию о новых книгах таким образом, чтобы упорядоченность не нарушилась...

ф) Ну во-первых создаёшь свой тип-запись со всеми нужными полями. При вводе заталкиваешь их в динамический массив (указателей) и там уже два варианта: сортировать пряма при вводе (когда введён следующий результат - пробегаешь массив в поиске места, куда вставить новый элемент) или перед выводом в файл (используешь любой уже существующий метод сортировки). По поводу сравнения - можно сделать отдельную процедурку, принимающую 2 слова, и возвращающую true, если первое по алфавиту раньше второго, и false - если наоборот. Внутри такой процедуры ты сначала приводишь слова к нижнему (или верхнему - это не важно, просто для удобства) регистру а затем просто их сравниваешь.
б) Тут тоже 2 способа:
1 - прочитать весь файл в динамический массив, вставить в него новую запись (одним из вышеперечисленных способов) и снова записать в файл.
2 - читать файл с самого начала в поисках позиции, в которую нужно добавить новую запись. Дойдя до нужного места делаешь обычный сдвиг: в временную переменную читаешь то, что в этой позиции (тебе же не нужны потери записей), в эту позицию записываешь вставляемую запись, а затем на место вставляемой записи (переменной) копируешь то, что у тебя во временной переменной - это надо повторять до конца файла (не забывая использовать seek() для установки позиции в файле, ибо при чтении/записи она автоматически смещается по файлу вперёд)

вот алгоритм... у нас на 1 курсе была подобная задача, только надо было осуществить поиск...

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".