русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Средства для работы с нетипизированными файлами.


Дата добавления: 2014-11-28; просмотров: 642; Нарушение авторских прав


1. Используют все процедуры и функции, рассмотренные ранее, кроме read, write, которые заменяются высокоскоростными.

2. Blockread(f,buf,c);- где buf – имя переменной, которая участвует в обмене данными с дисками, задает число, считываемых блоков;

3. Blockwrite(f,buf,c);- процедура предназначена для быстрой передачи в файл определенного числа записей из переменной buf.

Эти процедуры выполняют операции ввода – вывода блоками. Объем блока в байтах определяется по формуле: объем=c*recsize(f);,где recsize – размер записи файла, заданный при его открытии.

 

Задачи

1.Составить программу, которая создает типизированный файл, состоящий из 50 случайных чисел целого типа в диапазоне от –100 до 100. Найти максимальное среди этих чисел.

program zadacha_1;

uses crt;

var

f: file of integer; {файловая переменная}

a: array [1..50] of integer;

i,n, max: integer;

st: string;

begin

clrscr;

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

readln(st);

assign(f,st);

rewrite(f);

for i:=1 to 20 do

begin

a[i]:=-random(110)+67;

writeln('a[',i,']=',a[i]);

write(f,a[i]);

end;

readln;

close(f);

{$i-}

reset(f);

{$i+}

max:=a[1];

for i:=1 to 20 do

begin

read(f,a[i]);

if a[i]> max then max:=a[i];

end;

writeln('max=',max);

readln;

close(f);

end.

2.Создать текстовый файл и записать в него пять одинаковых фраз.

program zadacha_2;

uses crt;

var

f: text;{файловая переменная}

i: integer; {переменная счетчик}

s: string; {имя файла}

fr: string; {фраза}

begin

clrscr;

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

readln(s);

assign(f,s);

rewrite(f);

fr:='Hellow! Goodbye!'

for i:=1 to 5 do

begin

writeln(f,fr);

end;

readln;

close(f);

end.

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



program zadacha_3;

uses crt;

var

f: file;

st: string;

begin

clrscr;

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

readln(st);

assign(f,st);

{$I-}

reset(f);

{$I+}

if IOresult=0 then

begin

write('файл существует и нормально открыт');

close(f);

end

else

write('файл с именем ','"', st,'"', ' несуществует');

readln;

end.

4.Создайте текстовый файл. Запишите в него фразу "Здравствуй мир!"

program zadacha_4;

uses crt;

var

f: text;

st: string;

begin

clrscr;

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

readln(st);

assign(f,st);

rewrite(f);

write(f,'Здравствуй, мир!');

close(f);

end.

5.Посчитать количество строк в текстовом файле.

program zadacha_5;

uses crt;

var

f: text;

st,st1: string;

k: integer;

begin

clrscr;

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

readln(st);

assign(f,st);

{$i-}

reset(f);

{$i+}

while not eof(f) do

begin

readln (f,st1);

k:=k+1;

end;

close(f);

write ('k=',k);

readln;

end.

6.Найти длину строк текстового файла.

program zadacha_6;

uses crt;

var

f: text;

st,st1: string;

s: char;

k,m,i: integer;

begin

clrscr;

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

readln(st);

assign(f,st);

{$i-}

reset(f);

{$i+}

while not eof(f) do

begin

readln (f,st1);

m:=length(st1);

write ('m=',m);

readln;

end;

close(f);

end.

7.Найти среднее арифметическое всех чисел текстового файла, расположенных на четных строках.

program zadacha_7;

uses crt;

var

f: text;

st,st1: string;

sr: real;

s: integer;

k,i,t,m: integer;

begin

clrscr;

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

readln(st);

t:=1;

assign(f,st);

{$i-}

reset(f);

{$i+}

 

while not eof(f) do

begin

readln (f,st1);

k:=k+1;

if (k mod 2)=0 then

begin

val(st1,i,t);

s:=s+i;

m:=m+1;

end;

end;

close(f);

sr:=s/m;

write ('sr=',sr:15:2);

readln;

end.

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

program zadacha_8;

uses crt;

label l;

var

f,f2: text;

st,st1,s: string;

procedure perepic (st1,s:string);

var

f1: text;

begin

assign (f1,s);

rewrite (f1);

writeln (f1,st1);

close (f1);

end;

procedure perepic1 (st1,s:string);

var

f2: text;

begin

assign (f2,s);

append (f2);

writeln (f2,st1);

close (f2);

end;

begin

clrscr;

write('Введите имя заданного файла: ');

readln(st);

write ('Введите имя нового файла');

readln (s);

assign(f,st);

{$i-}

reset(f);

{$i+}

while not eof(f) do

begin

readln (f,st1);

k:=k+1;

end;

close(f);

m:=k;

k:=0;

assign(f,st);

{$i-}

reset(f);

{$i+}

while not eof(f) do

begin

readln (f,st1);

k:=k+1;

if k<=m then

begin

if k=1 then

begin

perepic (st1,s);

end

else

begin

perepic1 (st1,s);

end;

end;

end;

close(f);

end.

9.Создать файл и записать в него десять случайных чисел от –100 до 100.

program zadacha_9;

uses crt;

var

f: file of integer;

a: array [1..10] of integer;

i,n: integer;

begin

clrscr;

assign(f,'row');

rewrite(f);

for i:=1 to 10 do

begin

a[i]:=-random(100)+65;

write('a[',i,']=',a[i]);

readln;

write(f,a[i]);

end;

close(f);

end.

10.Имеется текстовый файл. Напечатать все его строки, имеющие в качестве фрагмента заданный текст.

program zadacha_10;

uses crt;

var

f: text;

s,s1,s2: string;

i,l,l1: integer;

begin

clrscr;

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

readln(s);

assign(f,s);

writeln('введите фразу для поиска');

readln(s1);

l1:=length(s1);

writeln;

writeln(' Строки с заданной фразой ');

writeln;

{$I-}

reset(f);

{$I+}

while not eof(f) do

begin

readln(f,s2);

l:= length(s2);

for i:=1 to l do

begin

if copy(s2,i,l1)=s1 then

begin

writeln (s2);

end;

end;

end;

readln;

close(f);

end.

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

program zadacha_11;

uses crt;

var

f: text;

i,l,k,k1: integer;

s,st: string;

begin

clrscr;

assign(f,'input.txt');

{$I-}

reset(f);

{$I+}

while not eof(f) do

begin

read(f,s);

l:=length(s);

for i:=1 to l do

begin

if s[i]='(' then k:=k+1;

if s[i]=')' then k1:=k1+1;

end;

if k=k1

then

writeln('Правильно')

else

writeln('Не правильно');

end;

readln;

close(f);

end.

12.Составить программу, которая создает файл, состоящий из случайных чисел целого типа в диапазоне от –100 до 100. Найти максимальное среди чисел.

program zadacha_12;

uses crt;

var

a:array[1..50] of integer; {a-массив чисел в файле}

i:integer; {i-порядковый номер}

n:integer;

max:integer; {n-количество элементов в массиве}

f:file of integer; {файл}

begin

clrscr; {ввод случайных чисел}

randomize;

writeln('кол. элементов');

readln(n);

assign(f,'a'); {связь}

rewrite(f); {открытие файла для записи}

for i:=1 to n do begin

a[i]:=-random(200)+100;

writeln('a(',i,')=',a[i]); {выводим все элементы}

end;

max:=a[1];

for i:=1 to n do begin

if a[i]>max then begin

max:=a[i];

end;end;

writeln('Максимальное: ', max);

readln;

close(f);

end.

13.Имеется текстовый файл. Напечатать первые 10 символов первой строки.

program zadacha_13;

uses crt;

var

f:text; {текстовый файл}

st:string; {имя файла}

st1:string[10]; {первые 10 символов}

begin

clrscr;

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

readln(st);

assign(f,st); {связь}

reset(f); {открытие файла для чтения}

begin

readln(f,st1);

writeln('Первые 10 символов: ',st1);

end;

readln;

close(f);

end.

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

program zadacha_14;

uses crt;

var

f: text;

a: array [1..100] of integer;

st: string;

s: integer;

k: integer;

n: integer;

i: integer;

begin

clrscr;

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

readln (st);

writeln ('введите число');

readln (k);

assign (f,st);

{$i-}

reset (f);

{$i+}

i:=1;

while not eof(f) do

begin

readln (f,s);

n:=n+1;

a[i]:=s;

i:=i+1;

end;

close (f);

a[1]:=k;

assign (f,st);

{$i-}

rewrite (f);

{$i+}

for i:=1 to n do

begin

writeln (f,a[i]);

end;

close (f);

 

end.

15.Имеется текстовый файл напечатать его пятую строку

program zadacha_15;

uses crt;

var

f:file of string;

n,i,k:integer;

sl,st:string;

begin

clrscr;

writeln('введите имя ');

readln(st);

assign(f,st);

{$I-}

reset(f);

{$I+}

while not eof(f) do

begin

read(f,sl);

k:=k+1;

end;

for i:=1 to k do

writeln(sl[5]);

readln;

close(f);

end.

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

program zadacha_16;

uses crt;

var

f: text;

st, st1: string;

s: string;

l: integer;

i: integer;

begin

clrscr;

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

readln (st);

assign (f,st);

{$i-}

reset (f);

{$i+}

s:='';

while not eof(f) do

begin

readln (f,st1);

l:= length (st1);

if l>=2 then

begin

s:=s+st1[2];

end;

end;

close (f);

writeln ('Слово получившееся из вторых букв каждой строки файла: ',s);

readln;

end.

17.Имеется типизированный файл, состоящий из 12 вещественных чисел. Найти их среднее арифметическое.

program zadacha_17;

uses crt;

var

f:file of integer; {описываю переменные}

n:integer;

k:integer;

sum:integer;

sa:real;

st:string;

begin

clrscr;

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

readln(st);

sum:=0;

k:=0;

assign(f,st); {устанавливаю связь с файлом}

{$I-}

reset(f);

{$I+}

while not eof(f) do {пока не конец файла}

begin

readln(n); {считываю файл}

sum:=sum+n;

k:=k+1;

end;

close(f);

sa:=sum/k;

writeln('среднее арифметическое равно',sa:5:2);

readln;

end.

18.Имеется текстовый файл. Напечатать все его строки, начинающиеся с буквы «r». Посчитать их количество.

program zadacha_18;

{Имеется текстовый файл. Напечатать все его строки, начинающиеся

с буквы "r". Посчитать их количество.}

program svet;

uses crt;

var

f:text; {файл текстовый}

k,s:integer; {кол-во строк всех и с буквой "r"}

st:string; {текст файла}

st1,st2,st3:string[20]; {первая, вторая, третья строки}

begin

clrscr;

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

readln(st);

assign(f,st);

{$i-}

reset(f);

{$i+}

while not eof (f) do begin {цикл: пока не кончится файл}

readln(f,st1);

k:=k+1;

if (k=1) and (st1[1]='r') then

{если номер строки равен 1,2,3, и первая буква="к", то}

begin

writeln('st1=',st1); {выводим строку}

readln;

s:=s+1; {считаем кол-во таких строк}

writeln('кол-во строк, начинающихся с "r" = ',s);

readln;

end;

if (k=2) and (st1[1]='r') then

begin

writeln('st2=',st1);

readln;

s:=s+1;

writeln('кол-во строк, начинающихся с "r" = ',s);

readln;

end;

if (k=3) and (st1[1]='r') then

begin

writeln('st3=',st1);

readln;

s:=s+1;

writeln('кол-во строк, начинающихся с "r" = ',s);

readln;

end;

end;

close(f);

end.

19.Имеется файл с числами. Поменять местами второе и последнее числа.

program zadacha_19;

uses crt;

var

a:array[1..50] of integer; {a-массив чисел}

i:integer; {i-порядковый номер}

n:integer; {n-количество элементов в массиве}

d:integer; {второе число}

f:file; {файл}

begin

clrscr;

randomize; {ввод случайных чисел}

writeln('Количество чисел');

readln(n);

assign(f,'fd'); {связь}

rewrite(f); {открытие файла для записи}

writeln('Исходный:');

for i:=1 to n do

begin

a[i]:=-random(200)+100;

writeln('a(',i,')=',a[i]); {выводим все элементы}

blockwrite(f,a[i],n); {запись в файл}

end;

d:=a[2]; {обмен}

a[2]:=a[n];

a[n]:=d;

writeln('Конечный:');

for i:=1 to n do

begin

writeln('a(',i,')=',a[i]); {выводим все элементы}

blockwrite(f,a[i],n); {запись в файл}

end;

readln;

close(f);

end.

20.Имеется текстовый файл. Найти длину самой длинной строки.

program zadacha_20;

uses crt;

var

f: text;

st,st1: string;

k,m,max: integer;

begin

clrscr;

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

readln(st);

assign(f,st);

{$i-}

reset(f);

{$i+}

while not eof(f) do

begin

readln (f,st1);

m:=length(st1);

max:=m;

end;

close (f);

assign(f,st);

{$i-}

reset(f);

{$i+}

while not eof(f) do

begin

readln (f,st1);

m:=length(st1);

if m > max then

begin

max:=m;

end;

end;

close(f);

writeln ('Длина самой длинной строки ',max);

readln;

end.


Контрольные вопросы.

1. Верно ли, что элементы файла могут быть только одного типа?

2. Можно ли сравнивать файлы или присваивать один другому?

 

3. Установите, возможны ли приведенные ниже объявления файлов:

1) type WordFile=file of word;

var MyFile : WordFile;

2) var MyFile : file of Word.

12.10. Установите, какая задача решается программой

var FileName : string; {имя файла}

Fvar : file of char; {переменная файлового типа}

Letter : char; {читаемый из файла символ}

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

readln(FileName);

assign(Fvar,FileName);

{$I-} {отключен автоматический контроль ввода/вывода}

reset(FVar);

{$I+} {включен автоматический контроль ввода/вывода}

if ioresult<>0

then begin writeln('Не открыт файл ',FileName); Halt end;

while not eof(Fvar) do

begin read(Fvar,Letter);

Letter:=upcase(Letter);

seek(Fvar,filepos(Fvar)-1);

write(Fvar,Letter)

end;

close(Fvar)

end.

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

function max(var t:text):real;

var m,x:real;

begin reset(t);

read(t,m);

while not eof(t) do

begin read(t,x);

if x>m then m:=x

end;

max:=m

end.

5. Установите, есть ли ошибки в программе

var f:file of integer;

i:integer;

procedure pp(var fail:file of integer; var f:boolean);

var i:integer;

begin reset(fail);

i:=0;

while not eof(fail) do

begin read(fail,i);

inc(i)

end;

k:=filesize(fail);

if i=k then pp:=true else pp:=false

end;

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

readln(i);

assign(f,i);

pp(fail,f);

close(fail);close(f);

end.

6. Исправьте ошибку в программе

var f1,f2 : file of real;

r : real;

s1,s2 : string;

begin write('Введите имя исходного файла ');

readln(s1);

write('Введите имя создаваемого файла ');

readln(s2);

assign(f1,s1);reset(f1);

assign(f2,s2);rewrite(f2);

while not eof(f1) do

begin read(f1,r);

write(f2,r);

end;

end.

 



<== предыдущая лекция | следующая лекция ==>
Средства для работы с типизированными файлами. | Задачи для самостоятельного решения


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.402 сек.