Отправляет email-рассылки с помощью сервиса Sendsay

Олимпиады на Turbo Pascal'е

  Все выпуски  

Turbo Pascal для школьников Выпуск N17


Информационный Канал Subscribe.Ru


Turbo Pascal для школьников

Выпуск №17
Перейти в архив>>

   Доброго времени суток, уважаемые подписчики!!!
Тема нашего сегодняшнего выпуска - работа с файлами в Turbo Pascal.
Итак, начнём. В Паскале выделяют 3 типа файлов: текстовые, типизированные и нетипизированные. У каждого из этих типов есть свои особенности.
Текстовые файлы используются наиболее часто, да и работать с ними наиболее просто. Чтобы работать с файлами любого из типов необходимо завести какую-нибудь файловую переменную и описать её в разделе var Для текстового файла это будет выглядеть примерно так:

    f: text;
Работа с файлом происходит как раз через эту переменную. Для того, чтобы связать переменную с файлом необходимо воспользоваться стандартой процедурой assign:
    assign (f,path);
Тут f - файловая переменная, описанная в разделе описания переменных, path - переменная или константа строкового типа, содеражащая имя файла, с которым связывается переменная f.
На этом этапе мы всего лишь связали переменную с файлом, но рабоатать с файлом мы ещё не можем, т. к. он не открыт. Файловые переменные типа text характерны тем, что нельзя одновременно считывать и записывать информацию в файлы, связанные с ними. Перед тем, как открыть файл мы должны определиться, что мы хотим делать с файлом: читать или записывать. Для чтения информации из файла мы можем воспользоваться стандартной процедурой
    reset (f);
Здесь f - переменная типа text, связанная с файлом. При открытии файла этой процедурой "курсор" становится в начало файла и чтобы считать например, третий элемент, нам необходимо будет считать первые два. Чтобы считать значение какой-либо переменной из файла можно воспользоваться уже известными нам процедурами read и readln с одним лишь новым добавлением: перед указанием имени считываемой (ых) переменной (ых), необходимо указать имя файловой переменной, иначе программа будет ждать ввода значений этих переменных с клавиатуры. Например:
    read (f,ch,ch1);
Из файла f считываются переменные ch и ch1, курсор остаётся на той же строке. Работа с файлом типа text очень похожа на обычный ввод/вывод с экрана/на экран.
Для добавления информации в файл существуют другие 2 стандартных процедуры: rewrite, append. При использовании первой из них, весь файл очистится и информация будет записываться в чистый файл. При использовании же процедуры append информация будет добавляться в конец файла.
Синтаксис:
    rewrite (f);
    append (f);
После работы с любым из файлом обязательно нужно закрывать файл:
    close (f);
Это особенно важно, если Вы записывали информацию в файл. Если файл не закрыть, то информация не сохранится!!! Мне кажется, что раньше я зря выдавал очень много теории в одном выпуске.

   Теперь, когда Вы уже знаете достаточно, я буду давать поминимуму теорию, делая упор на практику. Итак, домашняя задача. (теперь ввод, вывод информации должен осуществляться из/в файл):
На круговую нитку нанизаны бусы. Таблица B содержит веса бусинок b1,b2, ..., bn, причем первым указан вес самой тяжелой бусинки, веса остальных бусинок указываются в соответствии с расположением их на нитке при обходе ее по часовой стрелке. Построить таблицу B так, чтобы обход нитки по часовой стрелке начинался с бусинки с минимальным весом. Нить не разрывается. Елси решение не единственное, то найти любое. (1<=n<=100, 1<=bi<=1000). Входные данные берутся из текстового файла input.txt, в первой строке которого содержится число n, во второй - последовательность весов. Выходные данные выводятся в текстовый файл output.txt.
Пример
Входные данные
10
25 7 3 8 6 5 2 12 6 9
Выходные данные
2 12 6 9 25 7 3 8 6 5

   Ну а напоследок, довожу до Вашего сведения, что правила проведения турнира отныне несколько изменяются: теперь при посылании неправильного решения, решения, в котором некоторые из моих тестов не пройдут, со счёта участника турнира будут сниматься 2 балла. Так что ХОРОШО проверяйте решения перед тем, как отправлять их на проверку. Придумывайте сами несколько своих тестов. Ну и совсем напоследок - лидеры нашей турнирной таблицы:
1 место - Story - 20 баллов
2 место - Pavel Strapko - 15 баллов
Третьего места нет, т. к. все остальные, кто присылал свои решения имеют на своем счету 10 баллов.

Поздравляю!!!


На сегодня это всё. Пожелания и предложения пишите мне на e-mail: qsman1987@mail.ru

Рассылки Subscribe.Ru
Turbo Pascal для школьников    
   Рассылка 'Turbo Pascal для школьников'


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное