Не удается найти указанный файл паскаль

Обновлено: 06.07.2024

Для написания большинства сложных программ требуется обмен данными с файлами. В этой главе мы рассмотрим только текстовые файлы, для работы с бинарными и типизированными файлами см. специальную литературу и гл. 22.

21.1. Общие операции

Для работы с каждым файлом описывается переменная типа text :

Ее называют файловой переменной. Если программа обрабатывает несколько файлов одновременно, для каждого из них описывается такая переменная. Можно использовать и одну переменную для нескольких файлов, если они обрабатываются последовательно, и каждый следующий файл открывается после завершения работы с предыдущим. Вся работа с файлом происходит через файловую переменную, имя файла указывается только один раз следующим оператором:

assign ( f ,'имя_файла');

где f -- ранее описанная файловая переменная.

Этот оператор предшествует открытию файла и связывает переменную с файлом на жестком или гибком диске. В качестве имени файла может быть указан абсолютный или относительный путь к файлу на жестком или сменном диске:

assign ( f ,' data . txt ');

-- будет открываться файл с именем data . txt из текущей папки;

-- будет открыт файл с именем my . dat из корневой папки дискеты.

Имя файла также может быть введено пользователем с клавиатуры:

var name:string; f:text;

writeln ('Введите имя файла:');

Наконец, имя файла можно передать программе параметром командной строки (см. п. 5.3).

После связывания следует открыть файл. Каждый файл может быть открыт только в одном из трех режимов -- для чтения данных, для записи новых данных (при этом, если файл уже существовал, его прежнее содержимое будет стерто) или для добавления данных в конец файла. Если требуется сначала прочитать данные из файла, а потом переписать этот же файл, следует открыть файл для чтения, после чтения закрыть его и вновь открыть для записи. Открытие файла выполняется одним из трех операторов:

reset ( f ); -- открыть для чтения;

rewrite ( f ); -- открыть для записи;

append ( f ); -- открыть для добавления.

Чтение или запись данных осуществляется знакомыми нам операторами read , readln , write и writeln , но первым параметром этих стандартных процедур указывается имя файловой переменной:

var a,b,c:real; f1,f2:text;

и перевод строки в файл write . txt >

После того, как все операции с файлом выполнены, его следует закрыть, особенно если происходила запись или добавление данных:

- закрыли файл, связанный с файловой переменной f .

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

var f:text; name,s:string;

writeln ('Введите имя файла:');

if IoResult<>0 then begin

writeln ('Не могу открыть файл ', name ,

writeln ('Нажмите Enter для выхода');

writeln ('Первая строка файла:');

writeln ('Нажмите Enter для выхода');

В дальнейшем мы для краткости не всегда будем выполнять эти проверки, но хороший стиль программирования предполагает, что в своих программах вы будете их делать.

При чтении из файлов зачастую объем читаемых данных неизвестен заранее. Поэтому необходима функция, умеющая определять, прочитаны ли уже все данные:

function Eof(var F : text) : boolean;

-- возвращает true , если при чтении достигнут конец файла.

function Eoln (var F : text) : boolean;

-- возвращает true , если при чтении достигнут конец строки.

Как правило, основной цикл чтения файла с заранее неизвестным количеством строк выглядит так:

while not eof (f) do begin

и работы с ними>

При чтении из одного файла "смешанных" строковых и числовых данных следует проверять, действительно ли в нужных строках файла содержатся числа. Для этого можно использовать стандартную процедуру val . Как правило, формат файлов, понимаемых той или иной программой, выбирается программистом, и важно предусмотреть реакцию программы на ошибочный формат исходных данных. Допустим, наша программа представляет собой простейший телефонный справочник, включающий имена абонентов и по одному телефонному номеру на каждое имя. Формат файла, хранящего данные справочника, также выберем простейшим:

и т. д., то есть, в строках 1, 3, 5, . файла содержатся фамилии абонентов, а в строках 2, 4, 6, . -- их номера телефонов. Примем также, что файл справочника называется phones . txt , существует и находится в той же папке, откуда запускается программа. Полный листинг программы приводится ниже.

name , phone , search : string ;

writeln (Фамилия абонента для поиска:');

while not eof(f) do begin

readln ( f , name );

readln ( f , phone );

val ( phone , number , error );

номер-строку преобразовать в число>

if error<>0 then begin < если это

не удалось сделать - ошибка>

writeln ('Ошибка - нет номера телефона!',

' Номер строки=', strings );

writeln ('Нажмите Enter для выхода');

reset (input); readln; halt;

if name=search then begin

writeln ('Телефон найден:',number);

if found=false then

writeln ('Телефон не найден!');

writeln ('Нажмите Enter для выхода');

reset ( input ); readln ;

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

21.2. Примеры работы с файлами

Рассмотрим несколько типовых задач на обработку текстовых файлов.

1. Чтение числовых данных из файла. Массив данных имеет фиксированную размерность, примем ее равной 5.

a: array [1..5] of integer; i:integer;

for i:=1 to 5 do read (f, a[i]);

assign (w, 'result.dat');

writeln (w,' Результаты :');

Файл с именем data.txt может быть, например, таким:

Файл результатов result.dat будет таким:

2. Просмотр любого текстового файла на экране. По заполнении экрана до 24 строк программа делает паузу.

var f:text; s:string; count:integer;

write ('Имя файла или 0 для выхода: ');

if s='0' then halt;

if IoResult<>0 then begin

writeln ('Не могу открыть файл ',s);

write ('Нажмите Enter для продолжения');

while not eof(f) do begin

if count=24 then begin

write ('Нажмите Enter для продолжения');

write ('Нажмите Enter для нового ввода');

Строка s здесь используется как для ввода имени файла, так и для чтения строки файла -- ведь после выполнения связывания оператором assign имя файла нам больше не нужно. Обратите внимание также на оператор continue , в данном случае он позволяет не завершать выполнение программы после неверного ввода пользователя.

3. Работаем со "смешанным" файлом данных, строки которого содержат значения разных типов.

Пусть файл data . txt имеет следующий вид:

В каждой строке файла находится фамилия рабочего и через пробел -- номер участка, на котором он работает.

Напишем программу для вывода фамилий всех работников выбранного участка и подсчета их количества.

ridercbr

Проверь название файла. Именно файла. Вдруг опечатка.
Попробуй ввести полный путь в тексте программы.
Посмотри есть ли русские буквы в пути к файлу.
Если файл *.txt лежит не рядом с самой программой, положи его в папку с программой.
Или просто положи его в корень C и укажи путь в коде.

ridercbr

Новые вопросы в Информатика

Решите пожалуйста первые 4 задания, 40 баллов 11 класс

ПЖ! ПОМОГИТЕ!В Эксель, составить ведомость начисления заработной платы сотрудников за февраль месяц. Информация о тарифах оплаты (с указанием вида вал … юты), штатном расписании предприятия и ведомость начисления заработной платы должны быть расположены на разных листах книги табличного процессора. Формульные выражения, приведенные в ведомости, не должны быть привязаны к конкретному значению оклада. Тариф определяется автоматически по должности работника.

помогите заделать информатику пожалуйста срочно даю 100 балов ​

помогите заделать информатику пожалуйста срочно даю 100 балов ​

помогите заделать информатику пожалуйста срочно даю 100 балов ​

НА ПАСКАЛЕ! Напишите программу, которая заполняет массив из N=10 элементов случайными числами в диапазоне [10,50], выводит его на экран, а затем наход … ит индексы всех элементов, равных введенному числу X. Программа должна вывести ответ "не найден", если в массиве таких элементов нет. Пример: Массив: 12 45 30 18 30 15 30 44 32 17 Что ищем: 30 A[3] = 30 A[5] = 30 A[7] = 30

НА ПАСКАЛЕ! Напишите программу, которая заполняет массив из N=10 элементов случайными числами в диапазоне [-10,10], выводит его на экран, а затем нахо … дит индекс последнего элемента, равного введенному числу X. Программа должна вывести ответ "не найден", если в массиве таких элементов нет. Пример: Массив: -5 -6 2 3 -3 0 8 -3 0 9 Что ищем: 0 A[9] = 0

НА ПАСКАЛЕ! Напишите программу, которая заполняет массив из N=10 элементов случайными числами в диапазоне [0,20], выводит его на экран, а затем находи … т индекс первого элемента, равного введенному числу X. Программа должна вывести ответ "не найден", если в массиве таких элементов нет. Пример: Массив: 5 16 2 13 3 14 18 13 16 9 Что ищем: 13 A[4] = 13

Справочник по Pascal

Первый семестр

Второй семестр

Спецкурсы

Занятия по Выбору

Инженерные спецкурсы

Справочники

Полезные ссылки

NANO школа

Материалы по нано-олимпиаде

КППК

Домашние задания

Ошибки компилятора

Приложения написанные на Free Pascal могут генерировать ошибку времени выполнения (Run Time Error) когда в программе обнаруживаются определённые аварийные состояния . Этот документ содержит список возможных ошибок и описание их возможных причин.

1 Invalid function number (Неправильный номер функции)

Была попытка неправильного вызова системной функции.

2 File not found (Файл не найден)

Генерируется при попытке перенаименования, стирания или открытия несуществующего файла.

3 Path not found (Путь(директория) не найден)

Генерируется файловой системой когда путь не существует или неправелен. Также генерируется при попытке получить доступ к несуществующему файлу.

4 Too many open files (Слишком много файлов открыто)

Максимальное число открытых файлов для вашего процесса было превышено. Большинство операционных систем ограничивают максимальное число открытых файлов, и эта ошибка может возникнуть когда этот лимит превышен.

5 File access denied (В доступе к файлу - отказано)

Было запрешено получение доступа к файлу. Эта ошибка может произойти по нескольким причинам:

При попытке открыть файл, предназначенный только для чтения или в деиствительности являющиёся директорией, для записи. В данный момент занят или заблокирован другим процессом. При попытке создания файла или директории с именем, которое совпадает с именем уже созданного файла или директории. При попытке чтения из файла, открытого только для записи. При попытке записи в файл, открытый только для чтения. При попытке удалить директорию или файл, когда это не возможно.

6 Invalid file handle (Неправильный хэндл файла)

Происходит, когда используемая Вами файловая переменная была обнулена (испорчена); Это говорит о том, что память вашей программы была повреждена.

12 Invalid file access code (Неправильные ключи доступа к файлу)

Генерируется когда процедуры reset или rewrite вызываются с неправильным параметром FileMode.

15 Invalid drive number (Неправильный номер диска)

Генерируется когда в функции Getdir или ChDir был передан неправильный номер диска.

16 Cannot remove current directory (Невозможно удалить текущую директорию)

Генерируется при попытке удалить текущую директорию.

17 Cannot rename across drives (Можно переименовывать файлы только в пределах одного диска)

Вы не можете переименовать файл в файл, находяшиёся на другом диске или в другом разделе.

100 Disk read error (Ошибка чтения с диска)

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

101 Disk write error (Ошибка записи на диск)

Генерируется когда Вы пытаетесь записать данные на переполненый диск.

102 File not assigned (Файл не определён)

Генерируется функциями Reset, Rewrite, Append, Rename и Erase, При передаче в них файловой переменной, для которой не была выполнена функция AssignFile.

103 File not open (Файл не открыт)

Генерируется следующими функциями : Close, Read, Write, Seek, EOf, FilePos, FileSize, Flush, BlockRead, и BlockWrite если файл не был открыт.

104 File not open for input (Файл не открыт для чтения) Генерируется функциями Read, BlockRead, Eof, Eoln, SeekEof и SeekEoln если файл не был открыт при помощи Reset.

105 File not open for output (Файл не открыт для записи) Генерируется функцией write если текстовый файл не был открыт при помощи Rewrite.

106 Invalid numeric format(Неправильный числовой формат) Генерируется когда ожидалось числовое значение, но из текстого файла было прочитано не было.

150 Disk is write-protected (Диск защищён от записи)

151 Bad drive request struct length (Неправильная длина структуры запроса)

152 Drive not ready (Устройство не готово)

154 CRC error in data (Ошибка контрольной суммы в данных) (Критическая ошибка)

156 Disk seek error (Ошибка низкоуровнего поиска на диске)

157 Unknown media type (Неизвестный тип …)

158 Sector Not Found (Сектор не найден) (Критическая ошибка)

159 Printer out of paper (Нет бумаги в принтере)

160 Device write fault (Сбой записи устройства)

161 Device read fault (Сбой чтения устройства) (Критическая ошибка)

162 Hardware failure (Сбой железа)

200 Division by zero (Деление на ноль)

Приложение пыталось разделить число на ноль.

201 Range check error (Ошибка проверки границ)

Если вы компилировали прогамму с включённой провереой границ, Вы можете получить эту ошибку в следующих случаях:

Массив был вызван с индексом, выходящим за декларированые пределы. Попытка присвоить значение переменной, выходящее за декларированые границы (для instance и enumerated типов).

202 Stack overflow error (Переполнение стека)

Стек превысил свой максимально допустимый размер (в этом случае необходимо уменьшить размер локальных переменных), или стек был повреждён. Эта ошибка генерируется только с включённой проверкой стека.

203 Heap overflow error (Переполнение кучи)

Размер кучи превысил максимально возможный размер. Генерируется при попытке выделить память непосредственно функциями New, GetMem и ReallocMem, или когда экземпляр класса или объекта создаётся и памяти не достаточно. Пожалуйста учтите что, по умолчанию, Free Pascal поддерживает увеличение кучи, то есть, если необходимо, будет произведена попытка её увеличения. Как бы то ни было, если размер кучи превысил максимально допустимый системой и железом, то Вы получите эту ошибку.

204 Invalid pointer operation (Непрваильная операция с указателем)

Будет сгенерирована при вызове функций Dispose или Freemem с неправильным указателем (чаще всего, Nil)

205 Floating point overflow (Максимальная границы числа с плавающей точкой) Вы попытались использовать или создать слишком большое число с плавающей точкой.

206 Floating point underflow (Минимальная граница числа с плавающей точкой)

Вы попытались использовать или создать слишком маленькое число с плавающей точкой.

207 Invalid floating point operation (Неправильная операция над числами с плавающей точкой)

Может генерироваться если вы попытались получить квадратный корень или логарифм отрицательного числа.

210 Object not initialized (Объект не инициализирован)

Если программа была скомпилирована с включенной проверкой границ, эта ошибка будет сгенерирована при попытке вызвать виртуальный метод до его конструктора.

211 Call to abstract method (Попытка вызова абстрактного метода)

Ваша программа попыталась вызвать абстрактный виртуальный метод. Абстрактные методы должны быть перекрыты, и только перекрытый метод должен быть вызван.

212 Stream registration error (Ошибка регистрации потока)

Генерируется когда неправильный тип регистрируется в модуле objects.

213 Collection index out of range (Индекс элемента коллекции выходит за допустимые границы)

Генерируется когда Вы попытались обратиться к элементу коллекции с выходящим за допустимые границы индексом (модуль objects).

214 Collection overflow error (Переполнение коллекции) Размер коллекции превысил максимально допустимый размер, а Вы попытались добавить новый элемент (модуль objects).

215 Arithmetic overflow error (Арифметическое переполнение)

Эта ошибка генерируется когда результат операции превысил допустимые границы. В отличие to Turbo Pascal, эта ошибка генерируется только для 32-bit и 64-bit арифметических переполнений. Это происходит согласно тому, что все операнды конвертируются в 32-bit или 64-bit, до того как производить вычисления.

216 General Protection fault (GP Ошибка защиты памяти)

Приложение попыталось обратиться к недопустимому участку памяти. Это может быть вызвано следующими причинами:

Попытка получить доступ к выходящему за допустимые границы участку памяти (например, вызов move с неправильной длиной).

217 Unhandled exception occurred (Произошо неизвестное исключение)

Произошло исключение, и для него не существеет хэндла. Модуль sysutils устанавливает handler(менеджер), который отлавливает все исключения, и безопасно выходит в случае обнаружения оного.

219 Invalid typecast (Неправильное приведение типов)

Генерируется когда недопустимое приведение типов производится над классом используя оператор as. Эта ошибка также генерируется, когда объект или класс приводится к недопустимому объекту или классу, и виртуальный метод этого объекта или класса вызывается. Эта последняя ошибка детектируется только с использованием опции -CR компилятора.

227 Assertion failed error (Сбой утверждения)

Утверждение провалено, и процедурная переменная AssertErrorProc не была уcтановлена.

Столкнулся с такой проблемой:
написал программу в Geany, нажимаю сборку, выдает такую ошибку: Процесс дал сбой (Не удается найти указанный файл). Компилятор g++ (MinGW Installer). Что делать, подскажите, пожалуйста.

На другом ПК программа работала, так что дело не в коде.

Показано с 1 по 7 из 7

Опции темы
Поиск по теме
Отображение
  • Линейный вид
  • Комбинированный вид
  • Древовидный вид


Использование редактора Geany для Pawn (для Windows)

Добрый день! В данном мануале я подробно покажу и расскажу всё о настройке Geany для Pawn на ОС Windows.
От себя скажу, что я перепробовал множество редакторов, и Geany показался мне наиболее подходящим для языка Pawn.

Почему выбрать Geany для редактирования Pawn?

  • Возможность компиляции мода напосредственно из программы
  • Сворачивание кода
  • Боковая панель, содержащая список переменных, функций и т.д.
  • Неплохая скорость работы
  • Возможность смены цветовой схемы
  • Гибкое меню настроек редактора
  • И многое другое. Увидите сами.

Скриншоты

Шаг 5. Проверка работы.
Выберите пункт "Создать" и создайте в папке gamemode файл расширения *.pwn.
Для примера введите следующий код:

На этом всё! Надеюсь, этот мануал был для вас познавательным. Приятного модостроения!
P.S. От плюсика не откажусь 🙂

Последний раз редактировалось Sonyx; 24.09.2016 в 00:57 .

После того, как в системе были пряморуко установлены 2 вещи:

  1. freepascal-компилятор
  2. интегрированная среда разработки (IDE) программного обеспечения Geany

можно легко приступать к более-менее комфортному программрованию.

Вобщем, наши цели на данном этапе таковы:

  1. написать свою первую программу на языке Pascal
  2. понять, как эта программа работает и какова вообще структура pascal-прогаммы
  3. разобраться с интерфейсом Geany
  4. убедиться – что программирование это до тупости простое занятие

Начнем постепенно:)
Сейчас ты создашь программу, которая выведет на монитор историческое приветствие «Привет, Мир!».
Сама программа достаточно проста

Для того, чтоб программа заработала, потребуется выполнить следующие простые действия:

Запуск среды разработки Geany

Главное меню – Разработка – Geany


Запустив Geany ты увидишь перед собой достаточно привычное окно.

Все как обычно – строка меню вверху, под меню есть панель инструментов с иконками. Пустое пока рабочее поле.
Geany для тебя – это просто текстовый редактор типа Блокнота с некоторыми дополнительными возможностями. В Geany ты будешь набирать и редактировать свои программы как обычные текстовые файлы, компилятор поможет тебе находить и исправлять ошибки в программе. Программу прямо из Geany можно будет запустить на исполнение и посмотреть, как она работает.

Создание шаблона pascal-программы


Надо понимать, что Geany может использоваться для программирования на самых разных языках. Pascal только один из поддерживаемых.
Файл – Создать из шаблона – program.pas
После выполнения этой команды получим следующее:

Сохранение программы в файл на диске


Мало ли что:) Первым делом заготовку программы сохранить надо. Тут все просто
Файл – Сохранить

Проанализируем предложенный шаблон
Идущий с самого начала довольно большой кусок текста красного цвета в фигурных скобках – это просто комментарий. Его можно спокойно удалить. Просто запомни – фигурные скобки используются для создания комментариев кода программы.
Program Без_имени;
Это заголовок программы. Вместо имеющегося Без_имени надо вписать имя программы латинскими символами без пробелов.
uses crt;
Зто небольшой служебный блок. Нашей маленькой программе такой блок не потребуется и его можно удалить.
var
i: byte;
Блок var – очень важный служебный блок. В нем прописывают все переменные, которые будут использоваться в программе. Твоя первая программа будет очень простой, переменные в ней не используются, так что этот блок тоже можно удалить.
Блок Begin-End – это основной блок программы. Между служебными словами Begin-End как раз и должны находиться те команды, которые будет выполнять компьютер.
Тебе потребуется вписать в этот блок всего одну команду
writeln (‘Привет, Мир!’);
В итоге должен получиться вот такой код

(цифры слева от линии набирать разумеется не надо – это просто номера строк для удобства восприятия)

Компиляция

Выполнение программы

Запусаем программу на выполнение
Сборка – Выполнить
Открывается окно терминала и в нем программа начинает выполняться. Все те команды, которые находятся в основном блоке (между служебными словами Begin-End) последовательно друг за другом выполняются компьютером и результаты ты как раз и можешь наблюдать в окне терминале.

Для связи файла в коде программы и действительного файла на внешнем носителе используется процедура ASSIGN :

Текстовые файлы в паскале: процедуры работы

Возможные расширения файлов:
*.txt, *.log,
*.htm, *.html

Метод работы с текстовым файлом в Паскале предусматривает лишь последовательный доступ к каждой строке файла. Это означает, что начинать всегда возможно только с первой строки, затем проходя по каждой строке, дойти постепенно до необходимой. Т.е. можно сказать, что чтение (или запись) из файла (в файл) ведутся байт за байтом от начала к концу.

Предусмотрены два режима работы: режим для записи в файл информации и для чтения ее из файла. Одновременная запись и чтение запрещены.

Открытие файла

Допустим, мы в программе описали переменную для работы с текстовым файлом:

Рассмотрим дальнейшую последовательность работы с ним, и рассмотрим процедуры, необходимые для работы с текстовым файлом в Паскале:

процедура открытия существующего файла для чтения при последовательном доступе:

процедура открытия создаваемого файла для записи в него информации; если файл с таким именем уже существует, то информация в нем стирается:

процедура добавления в конец:

  • При открытии курсор устанавливается в начало файла.

открытие файла

Чтение из файла

Read (f, список переменных); ReadLn (f, список переменных);

Отличие ReadLn от Read в том, что при использовании readln после прочтения данных пропускаются все оставшиеся символы в данной строке, включая метку конца строки.

  • чтение осуществляется с той позиции, где в данный момент стоит курсор;
  • после чтения курсор сдвигается к первому непрочитанному символу.

Чтение до конца строки

close ( f ); reset ( f );

Запись в текстовый файл

Write (f, список переменных); WriteLn (f, список переменных);

Процедуры работы с файлом и закрытие файла

Нахождение конца файла:

Логическая функция, возвращающая True, если достигнут конец файла.

Нахождение конца строки:

Логическая функция, возвращающая True, если достигнут конец строки.

Удалить файл в Паскале

Переименование файла в Паскале

rename(переменная_файла,'новое имя файла');

Закрытие:

Важно: Таким образом, работа с файлом осуществляется через три основных шага:

Рассмотрим пример работы с файлами в паскале:

Пример 1: В файле text.txt записаны строки. Вывести первую и третью из них на экран.
(предварительно создать text.txt с тремя строками)

var filetext: text; a,b,c:string; begin assign(filetext,'c:\text.txt'); reset(filetext); readln(filetext,a); readln(filetext,b); readln(filetext,c); close(filetext); writeln(a); writeln(c); end.

Пример 2: Дан текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк EOLN и конца файла EOF при подсчете количества символов не учитывать).

* Из задачника М. Э. Абрамян (Text4)

var F: Text; N,K:integer; Name:String; C:Char; begin Assign(F,'c:\text.txt'); Reset(F); N:=0; K:=0; While not eof(F) do begin inc(N); While not eoln(f) do begin inc(K); Read(F,C); end; Readln(F); end; Close(F); Writeln(N,' ',K); end.

Пример 3:
Считать из файла input.txt числа (числа записаны в столбик). Затем записать их произведение в файл output.txt

var p, x: integer; f: text; begin assign(f, 'input.txt'); reset(f); p := 1; while not eof(f) do begin readln(f, x); p := p * x; end; close(f); assign(f, 'output.txt'); rewrite(f); writeln(f, 'Произведение чисел ', p); close(f); end.

var filetext: text; a:string; i:integer; begin assign(filetext,'c:\text.txt'); rewrite(filetext); for i:=1 to 10 do . reset(filetext); for i:=1 to 10 do begin . . end; close(filetext); end.

pascal file text2. Даны целые положительные числа N и K. Создать текстовый файл и записать в него N строк, каждая из которых состоит из K символов «*» (звездочка).

* Из задачника М. Э. Абрамян (Text1)

pascal file text3. Дана строка S и текстовый файл. Добавить строку S в конец файла.

* Из задачника М. Э. Абрамян (Text5)

Пример 4: Дана строка S и текстовый файл. Добавить строку S в начало файла.

* Из задачника М. Э. Абрамян (Text7)

var F_in,F_out: Text; Name,S: String; begin Write('S: '); Readln(S); Assign(F_in,'c:\text.txt'); Reset(F_in); Assign(F_out,'c:\text1.txt'); Rewrite(F_out); Writeln(F_out,S); While not eof(F_in) do begin Readln(F_in,S); Writeln(F_out,S); end; Close(F_in); Close(F_out); Erase(F_in); Rename(F_out,'c:\text.txt'); end.

pascal file text4. Дано целое число K и текстовый файл. В данном файле вставить пустую строку перед строкой с номером K . Если строки с таким номером нет, то оставить файл без изменений.
Для решения задачи можно использовать дополнительный временный файл.

* Из задачника М. Э. Абрамян (Text9)

Пример 5: Дано целое число K и текстовый файл. Удалить из файла строку с номером K . Если строки с таким номером нет, то оставить файл без изменений.

* Из задачника М. Э. Абрамян (Text15)

var F_in,F_out: Text; Name,line: string; K,i:integer; begin Write('K: '); Readln(K); Assign(F_in,'c:\text.txt'); Assign(F_out,'c:\text1.txt'); Reset(F_in); Rewrite(F_out); i:=0; While not eof(F_in) do begin Readln(F_in,line); inc(i); if i<>K then Writeln(F_out,line); end; Close(F_in); Close(F_out); Erase(F_in); Rename(F_out,'c:\text.txt'); end.

Пример 6: Дан текстовый файл F1 с набором нулей и единиц. Необходимо заменить все вхождения сочетаний 101 на 000 . Скорректированные записи поместить в файл F2 .

var f1,f2: text; pole:string; pz:integer; begin assign(f1,'1.txt'); assign(f2,'2.txt'); reset(f1); rewrite(f2); while not eof(f1) do begin readln(f1, pole); while pos('101',pole)<>0 do begin pz:=pos('101',pole); delete(pole,pz,3); insert('000',pole,pz); end; writeln(f2,pole) end; close(f1); close(f2); end.

Работа с данными из файла как с массивом

  • для сортировки необходим массив, для того чтобы одновременно работать со всеми числами;
  • неизвестно общее количество чисел.
  • объявляем массив для 100 элементов;
  • открываем файл на чтение, просчитываем количество чисел, заполняя массив, сохраняем количество в N;
  • сортируем N элементов массива;
  • записываем результат в файл.
pascal file text6. Дан текстовый файл. Удалить из него все пустые строки.

* Из задачника М. Э. Абрамян (Text16)

А теперь вернемся к олимпиадному заданию по Паскалю, частично решенному на одном из предыдущих заданиях:

p.in p.out
3
hello earth
khoor hduwk

var a:char; i,n,k:byte; s,s1:string; f_in,f_out:text; begin Assign(F_in,'z:\p.in'); Assign(F_out,'z:\p.out'); Reset(F_in); Rewrite(F_out); s1:=''; readln(f_in,k); readln(f_in,s); for i:=1 to length(s) do begin n:=ord(s[i]); if n<>32 then n:=n+3; if . then . ; if . then . ; if . then . ; a:=chr(. ); s1:=. ; end; writeln(s1); writeln(f_out,s1); close(f_in); close(f_out) end.

var a:char; i,n,k:byte; s,s1:string; f_in,f_out:text; begin Assign(F_in,'z:\p.in'); Assign(F_out,'z:\p.out'); Reset(F_in); Rewrite(F_out); s1:=''; readln(f_in,k); readln(f_in,s); for i:=1 to length(s) do begin n:=ord(. ); if n<>32 then n:=n+3; if n=123 then n:=97; if n=124 then n:=98; if n=125 then n:=99; a:=chr(n); s1:=s1+a; end; writeln(s1); writeln(f_out,s1); close(f_in); close(f_out) end.

полное решение var s, s1: string; i, j, a, n, k, b: integer; begin n := 97; s1 := ''; readln(s); readln(k); for i := 1 to length(s) do begin if s[i] <> ' ' then begin a := ord(s[i]); if a > 122 - k then for j :=123 - k to 122 do begin b:=122-j; if a = j then begin a := n+k-b-1; inc(n); end; end else a := a + k; s1 := s1 + chr(a) end else s1 := s1 + ' ' end; writeln(s1)end. --> pascal file text7. Пять делителей.
Имя входного файла: z3.in
Имя выходного файла: z3.out

Читайте также: