Работа 2 работа с текстовыми фаылами

Текстовые файлы – файлы на диске, состоящие из символов ASCII. Для разделения строк используются символы «конец строки».  Текстовые файлы являются файлами  с последовательным доступом. В любой момент времени доступна только одна запись файла. Другие записи становятся доступными лишь в результате последовательного продвижения по файлу. Текстовые файлы внутренне разделены на строки, длины которых различны. Для разделения строк используется специальный маркер конца строки. Объявляются текстовые файлы переменной типа text. Обрабатывать их можно только последовательно и с помощью процедур и функций:
Readln  (f , st )- чтение строки st из файла f и переход на начало следующей ; Writeln (f, st )- запись строки st в файл f и маркера конца строки ; Append (f ) - процедура, открывающая файл f для добавления строк в конец файла; Eoln (st )- логическая функция, результат выполнения которой равен TRUE, если достигнут маркер конца строки st.
Пример 1.  Создать текстовый файл, в который записать 3 предложения. Прочитать этот файл, вывести  его содержимое на  экран. Определить длину каждого предложения.
Program File_text; var f1 : text; st : string; n: byte; begin assign   (f1, 'file1.txt'); {связать с файлом file1.txt  файловую переменную f1  }  rewrite  (f1); { создать новый файл  с именем file1.txt } writeln ( f1, 'Очень полезно изучать'); { записать предложения в файл} writeln ( f1, ' всем  студентам '); writeln (f1, ' язык  Pascal '); close (f1);    { закрыть файл для записи } reset (f1); { открыть файл для чтения } while not eof (f1) do { пока не конец файла  f1} begin readln (f1, st);    {читаем строку из файла f1 } writeln(st);         { выводим на экран } n:= length (st);     {определяем длину строки } writeln ('  длина =',n); end; close (f1); { закрыть файл  для чтения} end .
Задание 1. Перенаправление. Прочитайте число n из файла input.txt и выведите его в файл output.txt Входные данные: В единственной строке входного файла input.txt записано число. Выходные данные: В единственную строку выходного файла output.txt нужно вывести в точности то же число, которое задано во входном файле. Program z1; var a:longint; Begin assign(input,'input.txt'); reset(input); read(a); close(input); assign (output,'output.txt'); rewrite(output); writeln(a); close(output); End.

Задание 6. Имеются два текстовых файла, состоящие из одной строки. Переписать  строку первого файла во второй, а строку второго файла в первый. Использовать вспомогательный файл. Program z6; var s,t:string; Begin assign(input,'t1.txt'); reset(input); read(s);
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
Работа с файлами
Работа с файлами применяется для хранения в них дополнительной и изменяющейся информации. В файлах размещаются данные, предназначенные для длительного хранения. Каждому файлу присваивается используемое при обращении к нему уникальное имя. Файлы широко используются при решении различных задач.
При работе с файлами на Паскале следует учитывать такую особенность: работа с файлом по его имени невозможна, а для доступа к файлу необходимо сначала связать его с некоторой файловой переменной особого типа, и в будущем использовать эту переменную вместо имени файла.
Для работы с внешними файлами в блоке описания необходимо определить файловую переменную, которая будет представлять файл внутри программы var f:text;
в качестве типа файловой переменной указывается стандартное имя text.
В данном случае файловая пременная типа text имеет имя f.
Для работы с файлами можно использовать следующие операции:
- assign для установления связи между файловой переменной и внешним именем файла.
Например: assign (имя_файловой_переменной, имя_файла);
- erase для удаления файла с диска.
Например: erase (имя_файловой_переменной);
- reset открытие существующего файла для ввода информации.
Например: reset (имя_файловой_переменной);
- rewrite создание и открытие нового файла для записи в него информации.
Например: rewrite (имя_файловой_переменной).
- close закрытие файла по окончании работы с ним.
Например: close (имя_файловой_переменной).
Для работы с файлами используются стандартные функции:
- eof нахождение конца файла,
- eoln нахождение конца строки данных.
Считывание информации из файла и занесение информации в файл организуется стандартными операторами:
write (имя_файловой_переменной, имя_записываемой_переменной) записывает символ в файл, связанный с файловой переменной,
readln (имя_файловой_переменной, имя_читаемой_переменной) чтение из текстового файла строки.
Содержимое файла можно выводить на экран, на принтер, в файл.
Примеры программ работы с файлами:
1. Для выполнения этой задачи сначала необходимо создать файл для последующего удаления. Это можно сделать набрав и сохранив в своей папке файл с любым текстом из Паскаль АВС. Файл должен располагаться его в том же каталоге, где и ваши программы.
Удаление с жесткого диска (винчестера) файлов с помощью программы, созданной на языке Паскаль.
uses crt;
var f:text;
a:string;
begin
write('Введите имя удаляемого файла с расширением ');
readln(a);
writeln('Удаляется файл ');
assign(f, a); {Связывание существующего файла с файловой переменной}
erase(f); {Удаление файла}
writeln('Файл удален');
end.
Наберите, сохраните программу в своей папке. Убедитесь, что файл действительно удален.
2. Программа создает новый текстовый файл и записывает в него информацию.
При создании файла в программе дайте ему расширение pas, тогда Вы сможете обратиться к файлу, не выходя из Паскаль АВС.
uses crt; var f:text;
g:string;
c:char;
begin
write('Введите имя создаваемого файла (латинскими буквами)');
read(g);
assign(f, g);
rewrite(f); {Открытие нового текстового файла (старый затирается) }
writeln('Введите текст, который нужно записать в файл: ');
writeln(' По окончании нажми Esc');
repeat
write(f, c); {Записывает символ в файл, связанный с файловой переменной}
write(c); {Печать введенного символа на экране}
if c=#13 then writeln; {Если нажат Enter, то перевод строки}
until c=#27; {код клавиши Esc}
close(f);
end.
После набора и проверки программы убедитесь, что ваш файл действительно создан и информация записана.
3. Программа читает из текстового файла и выводит содержимое на экран.
uses crt;
var f:text;
a, g:string;
q:integer;
c:char;
begin
clrscr;
write('Введите имя файла (латинскими буквами) из которого нужно прочесть данные ');
read(g);
assign(f, g);
reset(f); {Открытие текстового файла для чтения из него информации}
repeat
readln(f, a); {Чтение из текстового файла строки}
for q:=1 to length(a) do
begin
c:=a[q];
c:=chr(ord(c)); {Обработка очередного символа}
write(c);
if c=#13 then writeln;
end;
until eof(f); {Проверка, не кончился ли файл}
close(f);
writeln(' чтение информации завершено.');
end.




Дано два числа, найти их сумму. При этом числа взять из файла input.txt, а результат записать в файле output.txt. Пример: input.txt: 3 5 output.txt: 8
 Нравится

ГОЛОСОВАНИЕ ЗА ЛУЧШИЙ ОТВЕТ [ Cкачайте файл, чтобы посмотреть ссылку ]
[ Cкачайте файл, чтобы посмотреть ссылку ]
[ Cкачайте файл, чтобы посмотреть ссылку ] [ Cкачайте файл, чтобы посмотреть ссылку ]
А что книжки читать - это уже не модно? Если серьезно, то чтобы паскаль понял с каким файлом ты собераешься работать то тебе надо на этот файл указать. Тогда паскаль сможет с ним работать. assign(F, 'Input.txt'); здесь F переменная файлового типа, т. е var. F: Text; При чем именно текстового файла. Далее сам Паскаль не знает что тебе с этим файлом нужно делать. То ли ты в него записывать собираешься то ли ты из него читать данные будешь. Поэтому для первого делаем Rewrite(F); для второго Reset(F); Потом уже считаем данные либо записываем их. Read(F, x); - мы читаем данные. x - это переменная куда мы данные из файла запишем. Write(F, x); - мы записываем данные. А этом случае мы из x берем данные а в F записываем. Ну и конечно закрываем файлы. Это обязательная процедура. Close(F); var Inp, Outp: Text; // переменная файлового типа x, y: integer; begin assign(Inp, 'Input.txt'); assign(Outp, 'Output.txt'); Reset(Inp); Rewrite(Outp); Read(Inp, x); // читаем данные Read(Inp, y); x := x + y; Write(Outp, x); // пишем данные Close(Inp); // закрываем файлы Close(Outp); end.
0/0

Или
{Реализация задачи №1 "A+B" на Pascal} var a, b : longint; begin assign(input, 'input.txt'); reset(input); assign(output, 'output.txt'); rewrite(output); read(a, b); write(a + b); end.


Пример использования файлов
Задача. В текстовом файле f.txt записаны (вперемешку) целые числа: поровну отрицательных и положительных. Используя только один вспомогательный файл, переписать в текстовый файл h.txt все эти числа так, чтобы:
порядок отрицательных чисел был сохранён;
порядок положительных чисел был сохранён;
любые два числа, стоящие рядом, имели разные знаки.
Решение
Если бы нам разрешили использовать два вспомогательных файла, мы бы просто переписали все положительные числа в один из них, а все отрицательные в другой. А затем объединили бы два этих файла. В нашем же случае придётся переписать во вспомогательный файл только положительные числа. Затем при «сборке» мы будем считывать из вспомогательного файла «всё подряд», а из исходного только отрицательные числа.
Реализация
program z1; var f, g, h: Text;   k : Integer; begin   Assign(f, 'f.txt');   Assign(g, 'g.txt');   Assign(h, 'h.txt');  { Переписываем положительные числа в доп. файл }  Reset(f);  Rewrite(g);  while not Eof(f) do  begin    Read(f, k);    if k > 0 then      Write(g, k, ' ');  end;  { Собираем числа в новый файл h.txt }  Reset(f); { Возвращаем указатель на начало файла f }  Reset(g);  Rewrite(h);  while not Eof(g) do  begin    Read(g, k);    Write(h, k, ' ');    repeat      Read(f, k)    until k < 0;    Write(h, k, ' ');  end;  Close(f);  Close(g);  Close(h); end.


Файл – это упорядоченная последовательность однотипных компонентов, расположенных на внешнем носителе. Файлы предназначены только для хранения информации, а обработка этой информации осуществляется программами.
Использование файлов целесообразно в случае: 
долговременного хранения данных ; 
доступа различных программ к одним и тем же данным; 
обработки больших массивов данных, которые невозможно целиком разместить в оперативной памяти компьютера. 
В Паскале определены текстовые файлы, типизированные и нетипизированные. Файл, не содержащий ни одного элемента, называется пустым. Создается файл путем добавления новых записей в конец первоначально пустого файла. Длина файла, т.е. количество элементов, не задается при определении файла. Все файлы должны быть описаны в программе либо в разделе переменных VAR (либо в разделе типов TYPE).
Под чтением файла понимают ввод данных из внешнего файла, находящегося на диске, в оперативную память машины. Запись в файл – вывод результатов работы программы из оперативной памяти на диск в файл.
Работа с файлами выполняется следующими процедурами:
Assign – устанавливает связь между переменной и физическим именем файла, принятым в ОС.
Reset – открывает существующий файл для чтения.
Rewrite – создает и открывает новый файл для записи на внешнем устройстве (если файл ранее существовал, вся предыдущая информация из него стирается).
Close – закрывает открытый файл.
Для определения конца файла используется стандартная встроенная функция EOF (файловая переменная), которая принимает значение True, если достигнут конец файла, и значение False в противном случае.
В зависимости от способа объявления можно выделить три вида файлов Паскаля: 
типизированные файлы Паскаля (задаются предложением file of..); 
текстовые файлы Паскаля (определяются типом text); 
нетипизированные файлы Паскаля (определяются типом file). 
Текстовые файлы
Текстовые файлы – файлы на диске, состоящие из символов. Для разделения строк используются символы «конец строки». Текстовые файлы являются файлами с последовательным доступом. В любой момент времени доступна только одна запись файла. Другие записи становятся доступными лишь в результате последовательного продвижения по файлу. Текстовые файлы внутренне разделены на строки, длины которых различны. Для разделения строк используется специальный маркер конца строки. Объявляются текстовые файлы переменной типа text. Обрабатывать их можно только последовательно.
Основные процедуры и функции для работы с файлами  1. До начала работы с файлами в Паскале необходимо установить связь между файловой переменной и именем физического дискового файла:  Assign(<файловая_переменная>, <имя_дискового_файла>)
Следует помнить, что имя дискового файла при необходимости должно содержать путь доступа к этому файлу, включая имя дисковода. При этом имя дискового файла – строковая величина, т.е. должна быть заключена в апострофы. Например:
Пример процедуры Assign в Паскале  Assign (chf, 'G:\Home\ Student\ Lang\ Pascal\ primer.dat');
Не разрешается связывать с одним физическим файлом более одной файловой переменной.
2. После окончания работы с файлами на Паскале, они должны быть закрыты.  Close(<список файловых переменных>);  3. Подготовка к записи в файл Паскаля  Rewrite(<имя_ф_переменной>);
Процедура Rewrite(f) (где f – имя файловой переменной) устанавливает файл с именем f в начальное состояние режима записи, в результате чего указатель устанавливается на первую позицию файла. Если ранее в этот файл были записаны какие-либо элементы, то они становятся недоступными.
4. Запись в файл Паскаля  Write(<имя_ф_переменной>, <список записи>);  WriteLn(<имя_ф_переменной>, <список записи>);
При выполнении процедуры write(f, x) в ту позицию, на которую показывает указатель, записывается очередная компонента, после чего указатель смещается на следующую позицию. Естественно, тип выражения х должен совпадать с типом компонент файла.
5. Подготовка файла к чтению Паскаля  Reset(<имя_ф_переменной>);
Эта процедура ищет на диске уже существующий файл и переводит его в режим чтения, устанавливая указатель на первую позицию файла. Если происходит попытка открыть для чтения не существующий еще на диске файл, то возникает ошибка ввода/вывода, и выполнение программы будет прервано.
6. Чтение из файла в Паскале  Read(<имя_ф_переменной>,<список переменных>);  7. Функция определения достижения конца файла в Паскале  Eof(<имя_ф_переменной>);
Название этой функции является сложносокращенным словом от end of file. Значение этой функции имеет значение true, если конец файла уже достигнут, т.е. указатель стоит на позиции, следующей за последней компонентой файла. В противном случае значение функции – false.
[ Cкачайте файл, чтобы посмотреть картинку ]
РАБОТА С ФАЙЛАМИ
Многим программам требуется сохранять и читать информацию, используя
файловую систему компьютера. В языке Pascal изначально были предусмотрены
специальные операторы и типы данных для работы с файлами.
В ABC Pascal есть два вида файлов: текстовые и типизированные. В типизированных
файлах обмен с внешними устройствами производится без какого либо преобразования
данных, т.е., например, числа типа integer н
·епосредственно копируются на диск, занимая
по 4 байта каждое. Попытка просмотра такого файла в текстовом редакторе обречена на
неудачу, мы увидим лишь бессмысленный набор знаков. Однако скорость ввода/вывода
для таких файлов будет максимальной. Типизированные файлы мы рассмотрим позже в
связи с типом данных record.
Работа с текстовым файлами очень похожа на работу с обычным консольным
вводом/выводом. Числовые данные преобразуются в цифры в соответствии с заданными
форматами (стр. 15 и стр. 26). Строковый и символьный тип данных выводится без
преобразований. Следует учесть, что текстовый файл может быть открыт либо на чтение,
либо на запись
Созданный текстовый файл можно прочитать в простом текстовом редакторе
(notepad, aditor, в редакторе ABC Pascal, [можно и в Word12]). В текстовом файле ABC
Pascal используется кодировка Win-1251, в которой один символ занимает один байт.
Текстовый файл можно создать в редакторе (в соответствии с указанными правилами) и
прочитать в программе на ABC Pascal.
Рассмотрим сразу простой пример – вывод таблицы квадратов первых 10 чисел в
текстовый файл table.txt.
Program TextOut;
const name = 'text.txt'; // имя файла в текущем каталоге
var f : text; // файловая переменная
n : integer; // переменная для цикла for
begin
assign(f,name); // связывание файловой переменной с именем файла на диске
rewrite(f); // создание и открытие файла на запись
for n:=1 to 10 do writeln(f,n:2,sqr(n):4); // вывод в файл writeln(f,...);
close(f); // закрытие файла, сохранение всех еще незаписанных данных на диск
end.
В этом пример надо обратить внимание на несколько операторов:
1. f : text – переменная специального встроенного типа «текстовый файл»;
2. assign(f,name) – сопоставление файлу f в программе файла name на диске;
3. rewrite(f) – «перезаписываетu187 » файл f, т.е. либо создает новый пустой файл,
либо уничтожает старый (будьте осторожны поэтому) и опять создает новый
пустой файл;
4. writeln(f,) – модификация уже известного оператора writeln, отличается
от привычного только тем, что первый параметр – имя файловой переменной
5. close(f) – файлы надо обязательно закрывать, особенно файлы, открытые на
запись (как в приведенном примере), иначе часть данных может быть утеряна.
12 Для этого в MS Word при создании файла надо выбрать тип «*.txt – обычный текст», а при открытии
указать, что мы открываем текстовый файл в кодировке Win-1251.
Тема №14 Работа с файлами А.С.Цветков, ABC Pascal
- 40 - 01.06.2013
Вместо оператора rewrite, файл можно открыть оператором append, в этом
случае будет произведено открытие уже существующего файла в режиме дозаписи в
конец файла.13
Рассмотрим теперь пример чтения уже существующего файла, в качестве файла
используем созданный в предыдущем примере файл text.txt.
Program TextIn;
Uses CRT;
const name = 'text.txt'; // имя файла в текущем каталоге
var f : text; // файловая переменная
a,b : integer; // переменные для чтения
begin
assign(f,name); // связывание файловой переменной с именем файла на диске
reset(f); // открытие существующего файла на чтение
repeat
readln(f,a,b); // чтение из файла информации из целой строки
writeln(a:5,b:5); // вывод в окно CRT
until Eof(f); // Функция eof возвращает true при достижении конца файла
close(f); // закрытие файла
end.
В этом пример надо обратить внимание на следующее:
1. reset(f) – открытие существующего файла на чтение, если файла нет, то
произойдет ошибка выполнения программы;
2. readln(f,) – оператор чтения из файла, при работе с файлами действие
операторов read(f,) и readln(f,) различно, первый прочитает
необходимую информацию посредине строки, так что следующий оператор чтения
продолжит чтение со средины строки. Оператор readln после чтения
информации пропустит все оставшиеся до конца строки символы, таким образом
следующий оператор чтения начнет ввод с начала следующей строки;
3. Функция eof(f) возвращает всегда ложное значение, кроме одного
единственного случая: достигнут конец строки. Для того, чтобы обойти всякие
тонкие случаи, когда в u1082 конце файла есть несколько символов «конец строки» или
лишние пробелы и символы табуляции, рекомендуются использовать функцию
SeekEof(f) – ее действие аналогично eof, но она возвращает true, если до конца
файла есть только «пустые» символы: конец строки, табуляция и пробелы14.


ТЕМА 9. Работа с файлами
Работа с файлами применяется для хранения в них дополнительной и изменяющейся информации. В файлах размещают-ся данные, предназначенные для длительного хранения. Каждому файлу присваивается используемое при обращении к не-му уникальное имя. Файлы широко используются при решении различных задач.
При работе с файлами на Паскале следует учитывать такую особенность: работа с файлом по его имени невозможна, а для доступа к файлу необходимо сначала связать его с некоторой файловой переменной особого типа, и в будущем исполь-зовать эту переменную вместо имени файла.
Для работы с внешними файлами в блоке описания необходимо определить файловую переменную, которая будет пред-ставлять файл внутри программы var f:text;
в качестве типа файловой переменной указывается стандартное имя text.
В данном случае файловая пременная типа text имеет имя f.
Для работы с файлами можно использовать следующие операции:
- assign для установления связи между файловой переменной и внешним именем файла.
Например: assign (имя_файловой_переменной, имя_файла);
- erase для удаления файла с диска.
Например: erase (имя_файловой_переменной);
- reset открытие существующего файла для ввода информации.
Например: reset (имя_файловой_переменной);
- rewrite создание и открытие нового файла для записи в него информации. Волгоград МОУ СОШ № 95 А.А. Овчинников 22
Например : rewrite (имя_файловой_переменной).
- close закрытие файла по окончании работы с ним.
Например: close (имя_файловой_переменной).
Для работы с файлами используются стандартные функции:
- eof нахождение конца файла,
- eoln нахождение конца строки данных.
Считывание информации из файла и занесение информации в файл организуется стандартными операторами:
write (имя_файловой_переменной, имя_записываемой_переменной) записывает символ в файл, связанный с файловой переменной,
readln (имя_файловой_переменной, имя_читаемой_переменной) чтение из текстового файла строки.
Содержимое файла можно выводить на экран, на принтер, в файл.
Примеры программ работы с файлами:
1. Для выполнения этой задачи сначала необходимо создать дайл для последующего удаления. Это можно сделать набрав и сохранив в своей папке файл с любым текстом из Паскаль АВС. Файл должен распологаться его в том же каталоге, где и ва-ши программы.
Удаление с жесткого диска (винчестера) файлов с помощью программы, созданной на языке Паскаль.
uses crt;
var f:text;
a:string;
begin
write('Введите имя удаляемого файла с расширением ');
readln(a);
writeln('Удаляется файл ');
assign(f,a); {Связывание существующего файла с файловой переменной}
erase(f); {Удаление файла}
writeln('Файл удален');
end.
Наберите, сохраните программу в своей папке. Убедитесь, что файл действительно удален.
2. Программа создает новый текстовый файл и записывает в него информацию.
При создании файла в программе дайте ему расширение pas, тогда Вы сможете обратиться к файлу, не выходя из Пас-каль АВС.
uses crt; var f:text;
g:string;
c:char;
begin
write('Введите имя создаваемого файла (латинскими буквами)');
read(g);
assign(f,g);
rewrite(f); {Открытие нового текстового файла (старый затирается) }
writeln('Введите текст, который нужно записать в файл: ');
writeln(' По окончании нажми Esc');
repeat
write(f,c); {Записывает символ в файл, связанный с файловой переменной}
write(c); {Печать введенного символа на экране}
if c=#13 then writeln; {Если нажат Enter, то перевод строки}
until c=#27; {код клавиши Esc}
close(f);
end.
После набора и проверки программы убедитесь, что ваш файл действительно создан и информация записана.
3. Программа читает из текстового файла и выводит содержимое на экран.
uses crt;
var f:text;
a,g:string;
q:integer; c:char;
begin
clrscr;
write('Введите имя файла (латинскими буквами) из которого нужно прочесть данные ');
read(g);
assign(f,g);
reset(f); {Открытие текстового файла для чтения из него информации}
repeat
readln(f,a); {Чтение из текстового файла строки}
for q:=1 to length(a) do
begin
c:=a[q];
c:=chr(ord(c)); {Обработка очередного символа}
write(c);
if c=#13 then writeln;
end;
until eof(f); {Проверка, не кончился ли файл}
close(f);
writeln(' чтение информации завершено.');
end.
Задачи для самостоятельного решения
1. Составить программу, чтобы она создавала файл, записывала в него любой текст, а затем считывала и выводила на эк-ран.
2. В любую имеющуюся программу добавить блок запроса пароля и сравнивать его с хранящимся в файле, если пароль не совпадает, то программу не запускать.
3. Задачу 2 изменить так, чтобы пароль шифровался по любой схеме, а при проверке программа его самостоятельно рас-шифровывала.



Работа с файлами
Особенности:
имя файла упоминается только в команде assign, обращение к файлу идет через файловую переменную
файл, который открывается на чтение, должен существовать
если файл, который открывается на запись, существует, старое содержимое уничтожается
данные записываются в файл в текстовом виде
при завершении программы все файлы закрываются автоматически
после закрытия файла переменную f можно использовать еще раз для работы с другим файлом
Задача: в файле input.txt записаны числа (в столбик), сколько их – неизвестно. Записать в файл output.txt их сумму.
Алгоритм:
Открыть файл input.txt для чтения.
S := 0;
Если чисел не осталось, перейти к шагу 7.
Прочитать очередное число в переменную x.
S := S + x;
Перейти к шагу 3.
Закрыть файл input.txt.
Открыть файл output.txt для записи.
Записать в файл значение S.
Закрыть файл output.txt.
program qq;
var s, x: integer;
f: text;
begin
assign(f, 'input.txt');
reset(f);
s := 0;

while not eof(f) do begin
readln(f, x);
s := s + x;
end;

assign(f, 'output.txt');
rewrite(f);
writeln(f, 'Сумма чисел ', s);
close(f);

end.

Задача: в файле input.txt записаны числа (в столбик), сколько их – неизвестно, но не более 100. Переставить их в порядке возрастания и записать в файл output.txt.
Проблемы:
для сортировки надо удерживать в памяти все числа сразу (массив);
сколько чисел – неизвестно.
Решение:
выделяем в памяти массив из 100 элементов;
записываем прочитанные числа в массив и считаем их в переменной N;
сортируем первые N элементов массива;
записываем их в файл.
Чтение данных в массив
Глобальные переменные
var A: array[1..100] of integer;
f: text;
{Функция: ввод массива, возвращает число элементов}
function ReadArray: integer;
var i: integer;
begin
assign(f, 'input.txt');
reset(f);
i := 0;
while (not eof(f)) and (i < 100) do begin
i := i + 1;
readln(f, A[i]);
end;
while (not eof(f)) and (i < 100) do begin
i := i + 1;
readln(f, A[i]);
end;
ReadArray := i;
end;
Программа
program qq;
var A: array[1..100] of integer;
f: text; N: integer;
function ReadArray: integer;
...
end;
Begin
N := ReadArray;
{ сортировка первых N элементов }

{вывод отсортированного массива в файл}

assign(f, 'output.dat');
rewrite(f);
for i:=1 to N do
writeln(f, A[i]);
close(f);
end.


ИЛИ полностью записана: program qq;
var A: array[1..100] of integer;
f: text;
N,i: integer;
{ Функция: ввод массива, возвращает число элементов }
function ReadArray: integer;
var i: integer;
begin
assign(f, 'input.txt');
reset(f);
i := 0;

while (not eof(f)) and (i < 100) do begin
i := i + 1;
readln(f, A[i]);
end;
ReadArray := i;
end;


Begin
N := ReadArray;
{ сортировка первых N элементов }

{ вывод отсортированного массива в файл }

assign(f, 'output.dat');
rewrite(f);
for i:=1 to N do
writeln(f, A[i]);
close(f);
end.

Задача. Определить сколько раз в тексте переменной А встречается буква О.
Program tekst;
Var
Input:string;
F:text;
I,kol:integer;
Begin
Assign(f,’tekst1.txt’);
reset(f);
readln(f,input);
kol:=0;
for i:=1 to length(input) do
begin
if input[i] in [о’,’О’] then inc(kol);
end;
writeln(Буква о встречается=’,kol,’ раз’);
close(f);
end.

Или другой вариант: Program tekst;
Var
Input:string;
F:text;
I,kol:integer;
Begin
Assign(f,'tekst1.txt');
reset(f);
readln(f,input);
kol:=0;
for i:=1 to length(input) do
begin
if (input[i]='о') or (input[i]='О’) then kol:=kol+1 ;
end;
writeln('Буква о встречается=',kol,' раз');
close(f);
end.

ИЛИ
Записать результат в файл: tekst2.txt
Program tekst;
Var
Input:string;
F,f1:text;
I,kol:integer;
Begin
Assign(f,'tekst1.txt');
assign(f1,'tekst2.txt');
reset(f);
rewrite(f1);

while not eof(f) do
begin
kol:=0;
while not eoln(f) do
begin
readln(f,input);

for i:=1 to length(input) do
begin
if input[i] in ['о','О'] then inc(kol);
end;
writeln(f1,' Буква о встречается =',kol,' раз');
end;
end;
close(f);
close(f1);
end.




Задание на дом.
ОЛИМПИАДА ШКОЛЬНИКОВ ПО ИНФОРМАТИКЕ

Замок. (20 баллов)
Входной замок Лисы Алисы работает следующим образом: если введено натуральное число, которое меньше 100 или больше 999 – на дисплее устройства появляется надпись «FALSE»; если у0000000 введённого числа сумма цифр равна 13 – появляется надпись «ENTER» и можно войти; в остальных случаях появляется надпись «LOCK».
Входные данные: натуральное число N (HYPER13EMBED Equation.3HYPER14HYPER15).
Выходные данные: необходимо вывести надпись, которая должна быть на дисплее.
Пример:
Ввод 2
Вывод FALSE

Ввод 427
Вывод ENTER

Ввод 318
Вывод LOCK




Магазин канцелярских товаров (20 баллов)
Однажды, посетив магазин канцелярских товаров, Вася купил X карандашей, Y ручек и Z фломастеров. Известно, что цена ручки на 2 рубля больше цены карандаша и на 7 рублей меньше цены фломастера. Также известно, что стоимость карандаша составляет 3 рубля. Требуется определить общую стоимость покупки.
Входные данные
В единственной строке входного файла INPUT.TXT записаны три натуральных числа X, Y и Z через пробел, каждое из которых не превышает 109.
Выходные данные
В выходной файл OUTPUT.TXT выведите одно целое число – стоимость покупки в рублях.
Пример

INPUT.TXT
OUTPUT.TXT

1
1 1 1
20


Птицы. (20 баллов)
К кормушке прилетели воробьи, синицы, снегири и вороны. Мальчик посчитал количество птиц каждого вида. Напишите программу, которая запрашивает четыре числа – количество птиц каждого вида, а затем сообщает общее число птиц у кормушки, дописывая к числовому значению слово «птица» в правильной форме. Например, 33 птицы, 11 птиц, 21 птица.
Входные данные: 4 натуральных числа А,В,C,D ( А,В,С,D <=100).
Выходные данные: сумма переменных А,В,C,D и слово «птица» с согласованным окончанием.
Пример:
Ввод 2 5 8 1
Вывод 16 птиц

Ввод 4 2 7 10
Вывод 23 птицы

Ввод 3 1 8 9
Вывод 21 птица



Root Entry

Приложенные файлы

Добавить комментарий