Remkomplekty.ru

IT Новости из мира ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как записать массив в файл паскаль

запись массива в файл

дан массив
var aa:array[1..2,1..100] of real;
в него «забиты» координаты по х и по у (не важно чего)
мне надо записать эти координаты в файл
ну допустим:

наш массив
как записать(презаписать точнее (ч/з rewrite(f))) его в файл любым образом, чтобы после из файла можно было «считать массив» и воспользоваться им

запись массива в файл
подскажите, пожалуйста, как записать результат выполнения этого кода в файл v.txt и как потом.

Организовать запись массива в файл
Требуется создать массив, записи которого содержат следующую информацию: -о себе(ФИО, дата.

Запись — чтение двумерного массива в файл — из файла
Ребят, помогите пожалуйста к задаче https://www.cyberforum.ru/pascal/thread100714.html написать.

Запись массива в файл и чтение из него строк
Задание-составить программу содержащую инфу о фамилии и дате рождения нескольких человек,эту инфу.

есть загвоздка
write(f,aa[i,j]:0:2,’ ‘);
курсор стоит после «двойки»
и написано: нельзя преобразовывать выражение . к arrray of integer

собственно f(файл сам) как задать?

Добавлено через 4 минуты
я просто задавал так вот:
type TF=file of array [1..100] of integer;
t:=TF

Задать файл
var f:text;

write(f,aa[i,j]:0:2,’ ‘); А Вы точно написали a[i,j]:0:2? может у Вас a[i,j]:2?

Добавлено через 1 минуту

Так, проблем уже не вызывает, однако мне выводит одни нули
0,00 0,00 и так далее
хм. может быть загвоздка в том, когда я ввожу данные с клавиатуры, то я записываю их в один массив для совершения операций с графиком, а далее их трансформирую в другой, для построения графика?

Добавлено через 4 минуты
кое что подправил, есть успехи
задав 4 точки (1,1), (2,2), (3,3), (4,4)
он мне выводит в файле 1,00 2,00 3,00 4,00 0,00 0,00 0,00 0,00 и так далее
2 строчка, понятно, такая же

вопрос: можно ли от этого как-нибудь избавиться?
я понимаю, что это не повлияет на чтение из файла, но всё-таки?

между прочим, а кто такой «Николаус Вирт»

Добавлено через 41 секунду
какой я глупый! достаточно 100 изменить на заданное число n

вопрос про Вирта в силе)

Добавлено через 17 минут
ещё вопрос
есть массив
type m=array[1..100] of real;
для которого заданы координаты точек по Х и У
x,y:m

этот массив строит график, он мне необходим
я должен прочитать из файла и записать данные в 2 массива aa и m

Я слишком поздно осознал это, но поскольку трудился над программой не 1 день, всё-таки регшил оставить, ну а возникли после этого лишь «небольшие» проблемы)

Добавлено через 1 минуту
если я правильно понял, ты предлагаешь:
считать данные в 1й массив(m) а далее трансформировать в aa

хотя.. это логично, это проще

Добавлено через 3 минуты
не работает
вот собственно в чём загвоздка

type mas=array[1..100] of integer;//зачем делать real, а потом округлять
procedure ReadF(var ff:text;var x,y:mas);//пишем сразу в 2 массива для х и для у
begin
reset(ff);
for i:=1 to n do/считываем числа в первой строке
read(ff,x[i]);
for i:=1 to n do//во второй
read(ff,y[i]);
close(ff);
end;

он ну просто игнорирует строки read (ff. )
перескакивая на следующую

ещё раз всё по-порядку
дан текстовый файл
координаты по X в первой строке
координаты по Y во второй

для примера
0,00 2,00 1,00
1,00 3,00 4,00

мне надо их «считать/записать» в любой из приведённых ниже массивов
type m=array[1..100] of real;
var aa:array[1..2,1..100] of real;

как бы да, я понял, косяк в n
но как сделать, что бы компьютер сам определил кол-во точек?
нет, можно в лоб : «Введите кол-во точек, введённых ранее»))
но как-нибудь по-элегантнее есть вариант?

Добавлено через 6 минут
ну что же такое!
решил уж в лоб, задал n=3, и забил 6 точек в документ

косячина осталась где-то
через откладку смотрел : да,да, всё читает, x[i], y[i] всё знает!
у меня есть такой подпункт в меню-crt — вывод данных на экран — экран по-прежнему пустой

Добавлено через 4 минуты
Всёёёё.
загвоздка — у меня стоял вывод для «экранной клавиатуры»
то есть n было доселе известно.

остаётся последний вопрос : кака сделать, что бы компьютер сам распознал кол-во точек в файле
у меня есть одна идейка : считывать до «пробелы» и како-нибудь переменной типа интеджер присваивать значение «а=а+1» а в конце n = а/2

это может сработать?

Добавлено через 3 минуты
я в файлах не силён, прошу именно в этом помочь
и думаю моя огромная программа будет идеальна
Почему то так захотелось её тебе потом показать))

если решим-таки вопрос с точками, обязательно продемонстрирую то, над чем старались)

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Pascal: Занятие № 12 Часть1. Работа с файлами в паскале (текстовые файлы)

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

Виды файлов в зависимости от их описания и режимом работы

  1. текстовые (тип text) файлы со строками неопределенной длины;
  2. файлы с типом записей (двоичные или типизированные (file of) );
  3. файлы без типа для передачи данных блоками записей нетипизированные (file).

Описание файловых переменных:

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

где myfile — имя переменной (объявленной ранее в области var ), ассоциированной с файлом
c:text.txt — путь к реальному файлу
Первый аргумент процедуры assign в паскаль — переменная, второй – путь к файлу на диске.

Читать еще:  Код хемминга паскаль

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

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

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

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

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

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

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

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

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

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

Урок 21. Заполнение массива и вывод на экран

Урок из серии: «Язык программирования Паскаль»

После объявления массива с ним можно работать. Например, присваивать значения элементам массива и вообще обращаться с ними как с обычными переменными. Для обращения к конкретному элементу необходимо указать идентификатор (имя) массива и индекс элемента в квадратных скобках.

Например, запись Mas[2], A[10] позволяет обратиться ко второму элементу массива MAS и десятому элементу массива A. При работе с двумерным массивом указывается два индекса, с n-мерным массивом — n индексов.

Например, запись Matr[4, 4] делает доступным для обработки значение элемента, находящегося в четвертой строке четвертого столбца массива M.

Индексированные элементы массива называются индексированными переменными. За границы массива выходить нельзя. То есть, если в массиве Mas пять элементов, то обращение к шестому или восьмому элементу приведет к ошибке.

Рассмотрим типичные операции, возникающие при работе с одномерными массивами.

Заполнение одномерного массива значениями

Заполнение и вывод массива можно осуществить только поэлементно, то есть можно сначала присвоить значение первому элементу, затем второму и так далее, то же самое и с выводом на экран — выводим первый, второй, третий и так до последнего.

Паскаль не имеет средств ввода-вывода элементов массива сразу, поэтому ввод и значений производится поэлементно. Значения элементу массива можно присвоить с помощью оператора присваивания, или ввести с клавиатуры с помощью операторов Read или Readln. Очень удобно перебирать все элементы массива в цикле типа for.

Способы заполнения одномерных массивов:

  1. Ввод значения с клавиатуры.
  2. Задание значений в операторе присваивания с помощью генератора случайных чисел. Этот способ более удобен, когда много элементов в массиве (ввод их значений с клавиатуры занимает много времени).
  3. Задание значений по формуле.
  4. Ввод элементов массива из файла

1. Ввод значений элементов массива с клавиатуры. В связи с тем, что использовался оператор Readln, каждое значение будет вводиться с новой строки.

2. Заполнение массива числами, сгенерированными случайным образом из интервала [a; b]. Подключаем датчик случайных чисел — функцию random.

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

4. Чтение чисел из файла. Нужно заранее создать текстовый файл, в который запишите несколько строк, в каждой из которых по 30 чисел.

Вывод значений элементов массива на экран

Вывод значений элементов массива на экран выполняется, как и ввод, поэлементно в цикле. Для вывода будем использовать операторы Write или Writeln. В качестве входных параметров будем передавать процедуре не только массив, но и количество элементов, которые надо вывести, начиная с первого (это понадобится нам, когда мы будем удалять и добавлять элементы в массиве).

Пример 1. Заполнить массив с клавиатуры и вывести его на экран.

В программе будет использоваться две процедуры: процедура Init1 (заполнение массива с клавиатуры) и процедура Print (вывод массива на экран).

Пример 2. Заполнить массив из текстового файла и вывести на экран. В текстовом файте несколько строк, в каждой строке по 30 чисел.

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

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

Как записать массив в файл паскаль

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

Файловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент.

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

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

Читать еще:  Сортировка змейкой паскаль

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

Типы файлов Турбо Паскаль

Турбо Паскаль поддерживает три файловых типа:

  • текстовые файлы;
  • типизированные файлы;
  • нетипизированные файлы.

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

file of тип — типизированный файл (указан тип компоненты);
text — текстовый файл;
file — нетипизированный файл.

Примеры описания файловых переменных:

Стандартные процедуры и функции

Любые дисковые файлы становятся доступными программе после связывания их с файловой переменной, объявленной в программе. Все операции в программе производятся только с помощью связанной с ним файловой переменной.

связывает файловую переменную f с физическим файлом, полное имя которого задано в строке FileName. Установленная связь будет действовать до конца работы программы, или до тех пор, пока не будет сделано переназначение.

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

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

Если f — типизированный файл, то процедурой reset он открывается для чтения и записи одновременно.

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

закрывает открытый до этого файл с файловой переменной f. Вызов процедуры Close необходим при завершении работы с файлом. Если по какой-то причине процедура Close не будет выполнена, файл все-же будет создан на внешнем устройстве, но содержимое последнего буфера в него не будет перенесено.

возвращает значение TRUE, когда при чтении достигнут конец файла. Это означает, что уже прочитан последний элемент в файле или файл после открытия оказался пуст.

позволяет переименовать физический файл на диске, связанный с файловой переменной f. Переименование возможно после закрытия файла.

уничтожает физический файл на диске, который был связан с файловой переменной f. Файл к моменту вызова процедуры Erase должен быть закрыт.

возвращает целое число, соответствующее коду последней ошибки ввода — вывода. При нормальном завершении операции функция вернет значение 0. Значение функции IOResult необходимо присваивать какой-либо переменной, так как при каждом вызове функция обнуляет свое значение. Функция IOResult работает только при выключенном режиме проверок ошибок ввода — вывода или с ключом компиляции <$I->.

Работа с типизированными файлами

Типизированный файл — это последовательность компонент любого заданного типа (кроме типа «файл»). Доступ к компонентам файла осуществляется по их порядковым номерам. Компоненты нумеруются, начиная с 0. После открытия файла указатель (номер текущей компоненты) стоит в его начале на нулевом компоненте. После каждого чтения или записи указатель сдвигается к следующему компоненту.

Процедура записывает в файл f всю информацию из списка переменных.

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

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

Смещение указателя файла:

Процедура смещает указатель файла f на n-ную позицию. Нумерация в файле начинается с 0.

Определение количества компонент:

Функция возвращает количество компонент в файле f.

Определение позиции указателя:

Функция возвращает порядковый номер текущего компонента файла f.

Отсечение последних компонент файла:

Процедура отсекает конец файла, начиная с текущей позиции включительно.

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

Текстовый файл — это совокупность строк, разделенных метками конца строки. Сам файл заканчивается меткой конца файла. Доступ к каждой строке возможен лишь последовательно, начиная с первой. Одновременная запись и чтение запрещены.

Чтение из текстового файла:

Процедуры читают информацию из файла f в переменные. Способ чтения зависит от типа переменных, стоящих в списке. В переменную char помещаются символы из файла. В числовую переменную: пропускаются символы-разделители, начальные пробелы и считывается значение числа до появления следующего разделителя. В переменную типа string помещается количество символов, равное длине строки, но только в том случае, если раньше не встретились символы конца строки или конца файла. Отличие ReadLn от Read в том, что в нем после прочтения данных пропускаются все оставшиеся символы в данной строке, включая метку конца строки. Если список переменных отсутствует, то процедура ReadLn(f) пропускает строку при чтении текстового файла.

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

Процедуры записывают информацию в текстовый файл. Способ записи зависит от типа переменных в списке (как и при выводе на экран). Учитывается формат вывода. WriteLn от Write отличается тем, что после записи всех значений из переменных записывает еще и метку конца строки (формируется законченная строка файла).

Читать еще:  Этот сайт не может обеспечить безопасное

Добавление информации к концу файла:

Процедура открывает текстовый файл для добавления информации к его концу. Используйте эту процедуру вместо Rewrite.

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

Нетипизированные файлы — это последовательность компонент произвольного типа.

Открытие нетипизированного файла:

Параметр BufSize задает число байтов, считываемых из файла или записываемых в него за одно обращение. Минимальное значение BufSize — 1 байт, максимальное — 64 К байт. Если BufSize не указан, то по умолчанию он принимается равным 128.

Чтение данных из нетипизированного файла:

Эта процедура осуществляет за одно обращение чтение в переменную X количества блоков, заданное параметром Count, при этом длина блока равна длине буфера. Значение Count не может быть меньше 1. За одно обращение нельзя прочесть больше, чем 64 К байтов.

Необязательный параметр QuantBlock возвращает число блоков, прочитанных текущей операцией BlockRead. В случае успешного завершения операции чтения QuantBlock = Count, в случае аварийной ситуации параметр QuantBlock будет содержать число удачно прочитанных блоков. Отсюда следует, что с помощью параметра QuantBlock можно контролировать правильность выполнения операции чтения.

Запись данных в нетипизированный файл:

Эта процедура осуществляет за одно обращение запись из переменной X количества блоков, заданное параметром Count, при этом длина блока равна длине буфера.

Необязательный параметр QuantBlock возвращает число блоков, записанных успешно текущей операцией BlockWrite.

Для нетипизированных файлов можно использовать процедуры Seek, FIlePos и FileSize, аналогично соответствующим процедурам типизированных файлов.

Волгоградский государственный педагогический университет
Кафедра алгебры, геометрии и информатики

Язык паскаль онлайн

Работа с файлами паскаль – Ввод-вывод данных Pascal

    Browse: Home / Самоучитель паскаль онлайн / Работа с файлами паскаль – Ввод-вывод данных Pascal

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

Её суть заключается в том , чтобы компьютер , при проверке , брал значение переменных из входного файла input.txt ( обычно он называется именно так ). А результат работы программы выводился в выходной файл output.txt

Рассмотрим пример :

Нужно взять число из файла и записать квадрат этого числа в другой файл.

Объявляем три переменные . Переменную «a» для хранения числа из файла input.txt . Переменные «t1» и «t2» играют роль связки переменной с файлом , чтобы в последствии мы могли с ними работать . Тип переменных «t1» и «t2» записывается так — text.

Далее в программе мы связываем переменные «t1» и «t2» с файлами input.txt и output.txt.
Команда assign() отвечает за связку. Первый аргумент отвечает за имя переменной , а второй ( через запятую ) отвечает за имя файла.

Команды reset() и rewrite() отвечают за открытие файла для чтения и записи. Узнать больше о циклах здесь

Reset()

открывает наш файл для чтения , чтобы мы могли взять из файла какое либо значение , например значение 4. Чтобы открыть именно тот файл , который нам нужен следует написать имя переменной , к которой он привязан в аргументе . ( reset(t1) ).
Далее записываем в переменную «a» число из файла. Для этого нам понадобится привычная команда readln() , однако теперь мы передаем ей два аргумента . Первый аргумент это имя переменной , к которой привязан файл . Второй аргумент это имя переменной , в которую будет произведена запись.

После того как мы занесли в переменную «а» число , которое было в файле , следует закрыть файл командой close(). Аргумент обозначает какой именно файл нужно закрыть. ( close(t1) ).

Rewrite()

открывает файл для записи в него какой либо информации , однако при этом стирает всю информацию , которая была записана в нем до этого. Для того , чтобы прошлая информация осталась целой , а новая записывалась в конце файла : вместо команды rewrite следует использовать команду append(). Чтобы открыть именно тот файл , который нам нужен , следует записать имя переменной , к которой привязан файл в аргументе . ( rewrite(t2) ).
Далее записываем информацию в output.txt привычной командой writeln() . Но теперь она в аналогии с readln(t1,a) имеет два аргумента . Первый аргумент отвечает за имя переменной , к которой привязан файл , а второй аргумент за информацию которую будут записывать в файл . В нашем случае это квадрат переменной «a». Функция sqr() отвечает за квадрат аргумента.

После следует закрыть второй файл close(t2).

На заметку :

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

Прочие функции :

  • eof(t1) — Возвращает истинное значение , когда достигнут конец файла. Хорошим примером работы такой функции служит запись всех чисел в файле. Это осуществляется с помощью цикла while ( not eof(t1) ) do — дословно пока не конец файла t1 делай …
  • eoln(t1) — Работает аналогично функции eof(t1) , за исключение того , что оно возвращает истину тогда , когда достигнут конец строки , а не всего файла.
  • erase(t1) — Уничтожает файл привязанный к переменной t1.
  • rename(t1) — Меняет имя файла , к которому привязана переменная t1 . Перед применением следует закрывать файл командой close().
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×