Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Каждая переменная типа string вводится отдельной процедурой readln




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

ПРИМЕР 1

В строке "Язык программирования Фортран" слово "Фортран" заменить словом "PASCAL".

Решение

Var

L:string; {Буква Ф- 23-й символ в строке L}

Begin { $ }

L:='Язык программирования Фортран';

Delete(L,23,10); {Удаляем 10 символов, но будет удалено столько, сколько есть фактически}

L:=L+'PASCAL';

Writeln(L)

End.

ЗАДАНИЯ

№1. Подсчитать количество символов в строке до точки.

№2. Для строки "Иванов Иван Иванович" определить, с какой позиции строки начинается имя "Иван".

№3. Подсчитать k - количество цифр в десятичной записи целого неотрицательного числа n.

№4. В строке L одна запятая и три пробела подряд (встречаются один раз). Запятую заменить на восклицательный знак, а три пробела - на один пробел.

№5. Сколько раз заданный символ встречается в строке S?

№6. С использованием цикла с параметром определить количество слов в заданной строке.

№7. Удалить все пробелы из строки ST1.

№8. В строке LB все большие буквы Q заменить на маленькие q. Решить задачу с использованием оператора цикла с предусловием.

№9. Выполнить задание №191 с использованием оператора цикла с параметром.

№10. Выполнить задание №189 с использованием оператора цикла c предусловием. Строка заканчивается точкой.

№11. Определить количество цифр в целом числе и найти их сумму.

№12. Подсчитать количество символов от 'A' до 'I' и количество символов 'Я' в заданной строке L.

№13. Существует ли в строке L слова, начинающиеся с буквы 'А' и заканчивающиеся буквой 'Я'? Найденные слова вывести на экран.

№14. Из строки L удалить все слова, оканчивающиеся на -кая, -кое.

№15. В строке ST заменить все точки на три точки (многоточие).

14. РАБОТА С ФАЙЛАМИ

Существует три способа задания файлового типа:

<имя>=FILE OF <тип>;

<имя>=TEXT;

<имя>=FILE;

где <имя> - имя файлового типа;

FILE OF - зарезервированные слова (файл из) (типизированные);

TEXT - имя стандартного типа текстовых файлов (текстовые файлы);

FILE - любой тип языка PASCAL, кроме файлов (нетипизированные).

Связь файловой переменной с именем файла осуществляется с помощью процедуры

ASSIGN(<ф.п.>,<имя>)

где

<ф.п.> - файловая переменная;

<имя> - текстовое выражение, содержащее имя файла или имя логического устройства.

Имена логических устройств:

CON - определяет консоль - клавиатуру или экран дисплея;

PRN - определяет принтер;

NUL - определяет «пустое» устройство.

Если имя файла задается в виде пустой строки (например, ASSIGN(f,'')), то ввод-вывод предполагается с логического устройства CON.

ИНИЦИАЦИЯ файла - указание направления передачи данных:

RESET (<ф.п.>); - файл для чтения;

REWRITE(<ф.п.>); - файл для записи (старый файл

уничтожается).

APPEND (<ф.п.>); - инициирует запись в ранее существовавший текстовый файл для его расширения.

CLOSE (<ф.п.>); - закрывает файл (связь файловой переменной с именем файла сохраняется).

RENAME(<ф.п.>,<новое имя>); - переименование файла (перед применением необходимо закрыть файл).

FLUCH (<ф.п.>); - очищает буфер файла.

Функция EOF(<ф.п.>):BOOLEAN тестирует конец файла (TRUE - указатель стоит в конце файла).

Функция IORESULT:WORD возвращает условный признак последней операции ввода-вывода (ноль - операция завершена успешно).

ТЕКСТОВЫЕ ФАЙЛЫ

Функция EOLN(<ф.п.>):BOOLEAN - TRUE, если во входном текстовом файле достигнут маркер конца строки.

ТИПИЗИРОВАННЫЕ ФАЙЛЫ

SEEK(<ф.п.>,<N компонента>:LONGINT) - указывает номер (N) компонента в файле.

Функция FILESIZE(<ф.п.>):LONGINT - количество компонентов файла.

Функция FILEPOS(<ф.п.>):LONGINT - порядковый номер компонента в файле, который будет обрабатываться следующей операцией ввода-вывода.

НЕТИПИЗИРОВАННЫЕ ФАЙЛЫ

ИНИЦИАЦИЯ файла: RESET (<ф.п.>[,<длина записи>]);

REWRITE(<ф.п.>[,<длина записи>]);

где <длина записи> - длина записи в байтах (при 512 байтах - максимальная скорость, по-умолчанию <длина записи> равна 128 байтам).

BLOCKREAD (<ф.п.>,<буф>,<N>[,<NN>]); BLOCKWRITE(<ф.п.>,<буф>,<N>[,<NN>])

где <буф> - имя переменной (буфера), которая будет участвовать в обмене данными с диском;

<N> - количество записей, которые должны быть прочитаны или считаны за одно обращение к диску;

<NN> - необязательный параметр, содержащий при выходе из процедуры количество фактических обработанных записей.

Процедуру SEEK и функции FILESIZE, FILEPOS, описанные ранее, можно использовать и для нетипизированных файлов.

ПРИМЕР 1

1) Ввести двухмерный массив X(5,3) и записать его в файл Z.TXT.

2) Все элементы массива X увеличить в два раза (массив считать из файла Z.TXT). Если последний элемент массива X53=0, то в конец файла добавить еще один элемент: -1.

Решение

1) Var

X:real;

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

j,i:integer;

Begin

ASSIGN(f,'z.txt'); {назначение, соответствие}

REWRITE(f); {создаем файл для записи}

for i:=1 to 5 do {Можно сделать так: }

for j:=1 to 3 do { for i:= 1 to 15 do }

begin

read(x);

writeLN(f,x) {Запись в файл}

end;

CLOSE(f) {Закрытие, фиксирование}

End.

2) Var

x: array [1..5,1..3] of real;

f:text;

i,j:integer;

Begin

assign(f,'z.txt');

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

for i:= 1 to 5 do

for j:= 1 to 3 do

begin

read(f,x[i,j]);

x[i,j]:=2*x[i,j]

end;

{ Мы сейчас находимся в конце файла, значит, можно добавлять в файл записи }

if x[5,3]=0 then writeln(f,-1);

{ Добавим к условию задачи следующее:

’ дописать в файл новую матрицу после старой ’, т.е. в файле наша матрица будет записана два раза подряд }

for i:=1 to 5 do

for j:= 1 to 3 do

writeln(f,x[i,j]);

if x[5,3]=0 then writeln(f,-1);

close(f)

End.

B этом примере первую часть можно было оформить так:

Type

M=array[1..5,1..3] of real;

Var

x:M;

i,j:integer;

f:file of M;

Begin

for i:=1 to 5 do

for j:=1 to 3 do

read(x[i,j]);

ASSIGN(f,'z.txt');

REWRITE(f);

{ Так как f – файловая переменная, т.е. файл записей, в котором каждая запись представляет собой массив, сразу можно записать в файл весь массив }

write(f,x); { массив записывается целиком процедурой WRITE }

CLOSE(f)

End.

Если файловая переменная объявлена как файл (file of) типа массив, то каждая запись файла содержит массив, описанный в типе, т.е. каждая процедура write (read) записывает (считывает) в (из) файл(а) за одно обращение один массив.

 




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 439; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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