Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМКД-Паскаль-2012.docx
Скачиваний:
38
Добавлен:
01.05.2015
Размер:
561.45 Кб
Скачать

П р о г р а м м а

begin

writeln ('Удаление парных пробелов.');

writeln ('Введите строку:' );

readln (s);

I:=pos (' ', s);

if l=0 then

writeln ('Удаления не было')

else

begin

while l >0 do {пока в строке есть парные пробелы}

begin

delete (s,pos (' ',s), 1);

I:=pos (' ',s)

end;

writeln ('Получена строка:');

writeln (s);

end;

end.

ПРИМЕР 2: В данном массиве из слов подсчитать количество слов, начинающихся и заканчивающихся гласной буквой.

П р о г р а м м а

program glasn;

const maxn = 100;

var s: array [1..maxn] of string;

l,n,i,k:integer;

begin

writeln ('n=');

readln (n);

writeln ('вводите элементы массива s');

for i:=1 to n do

readln (s[i]);

k:=0;

for i:=1 to n do

begin

l:= length (s[i]);

if (pos(s[i][1],'аоиуеыэюя АОИУЕЫЭЮЯ') > 0)

and (pos(s[i][1],'аоиуеыэюя АОИУЕЫЭЮЯ') > 0)

then k:=k+1

end;

writeln ('k=',k)

end.

Упражнения:

  1. Даны два различных слова, в каждом из которых от 1 до 8 строчных латинских букв и за каждым из которых – пробел. Напечатать эти слова в алфавитном порядке.

  2. В заданном тексте удалить часть текста, заключенную в скобки.

  3. Напечатать самое длинное слово из заданного текста.

  4. Найти сколько раз в тексте встречается заданное слово.

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

  6. В заданном тексте заменить символ пробел на символ запятая.

  7. Написать программу, которая находить на какую букву начинается больше всего слов в тексте.

  8. Дан текст. Если первый символ в тексте не является малой латинской буквой, то оставить без изменения. Если же это малая латинская буква, то заменить символом «*».

  9. В заданном тексте везде заменить слово А1 на слово А2.

  10. Задан текст длиной 255 символов. Найти сколько раз в тексте встречаются различные буквы русского алфавита.

Лабораторная работа 9 записи. Файлы

ЦЕЛЬ РАБОТЫ:

  1. Изучить правила описания и использования переменных типа запись в языке Паскаль.

  2. Получить практические навыки работы с файлами.

Краткие сведения из теории

Под записью понимается структура данных, об"единяющая под одним именем данные различных типов. Записи состоят из фиксированного числа элементов, называемых полями. Поле - это переменная определенного типа. Различные поля могут иметь (в отличии от элементов массива) различный тип. Обращение к элементу записи выполняется с помощью составного (уточненного) имени. Первая часть составного имени - это имя записи, вторая часть - имя поля. Между именем записи и именем поля ставится точка: ZAP.IMP, где ZAP - имя записи, IMP - имя поля.

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

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

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

type имя-типа=file of базовый-тип;

var имя-файловой-переменной : имя-типа;

или

var имя-файловой переменной : file of базовый-тип;

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

Так как, по определению, число элементов файла не задается, то в Turbo Pascal введена стандартная функция

Eof(var F:file):boolean;

Когда будет достигнут конец файла, Eof(F) примет значение True, в в противном случае - False.

ПРИМЕР 1: Создать файл для хранения записей вида:

Запрос выводится с новой строки для каждого поля. Например:

Телевизор

Название . . . . . . . . . РЕКОРД

Цена (тыс.) . . . . . . . 3000

Диагональ . . . . . . . . 59

Изображение (ц/ч) . . Ц

Производитель . . . . .

Завод . . . . . . . . Фотон

Город . . . . . . . . Москва

Директор . . . . . Иванов

После записи файла осуществить поиск в нем названий телевизоров стоиостью менее 2 млн.руб.

program zapis;

const maxn = 30;

type TV = record

Name : string[20];

Price : 1 .. 32000;

Diagonal : 1 .. 50;

Color : char;

Proizv : record

city : string[25];

factory : string[50];

director : string[30];

end;

end;

tele = file от TV;

var f : tele;

was : boolean;

z:TV;

begin

writeln ('Ввод записей');

writeln ('Признак окончания ввода - *');

assing (f,'f.dat');

rewrite(f);

writeln (' Телевизор ');

write (' Название . . . . . .');readln(z.name);

while z.name <> ' * ' do

begin

write (' Цена (тыс.). . . . . .');readln(z.Price);

write (' Диагональ . . . . . .');readln(z.Diagonal);

write (' Изображение (ц/ч). . .');readln(z.Color);

writeln (' Производитель. . . . . ');

with z.Proizv do

begin

write (' Завод . . . . . . .');readln(city);

write (' Город . . . . . . .');readln(factory);

write (' Директор. . . . . .');readln(director);

tnd;

write (f,z)

writeln (' Телевизор');

write ('Название .......'); readln (z.name)

end;

close (f);

writeln ('Файл сформирован');

reset (f);

was:=false; {признак того, что искомые телевизоры найдены)

writeln ('Названия телевизоров стоимостью менее 2 млн.руб.');

while not eof(f) do

begin

read (F,Z);

if z.price < 2000 then

begin

writeln (z.name);

was:=true

end

end;

if was=false then

writeln ('Не найдены');

close(f)

end.

Упражнения:

  1. Дан файл f, компоненты которого являются целыми числами. Найти наибольший и наименьший из компонентов файла.

  2. Дан файл f, компоненты которого являются целыми числами. Найти количество четных чисел и количество квадратов нечетных чисел среди компонентов файла.

  3. Даны символьные файлы f1 и f2.Поменять местами содержимое файлов, не используя стандартных процедур.

  4. Дан файл f, компоненты которого являются действительными числами. Найти сумму и произведение компонентов файла, а также значение последнего элемента.

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

  6. Дан файл f, компоненты которого являются целыми числами. Записать в файл g все четные числа файла f, а в файл n-все нечетные.

  7. Дан файл f, компоненты которого являются символами. Записать в файл g компоненты файла f в обратном порядке.

  8. Дан файл f, компоненты которого являются целыми числами.. Переписать компоненты файла f в файл g, так чтобы в файле g сначала или отрицательные, затем положительные числа.

  9. Даны символьные файлы f и g. Определить, совпадают ли компоненты файла f с компонентами файла g. Если нет, то получить номер первой компоненты, в которой файлы f и g отличаются между собой.

  10. Дан символьный файл f. Найти самое длинное слово в файле.

  11. Дан текстовый файл f. Получить самую длинную строку файла.

  12. Дан текстовый файл f. Записать в перевернутом виде строки файла f в файл g.

  13. Дан текстовый файл f и строка s. Получить все строки файла f, содержащие в качестве фрагмента строку s.

  14. Дан текстовый файл f. Получить самую короткую строку файла.

  15. Дан текстовый файл f. Проверить соответствие числа открывающих и закрывающих скобок.

  16. Даны текстовые файлы f и g. Определить совпадают ли компоненты файлов.

  17. Дан текстовый файл f. Определить сколько строк в файле начинаются с символа 'р'.

  18. Дан текстовый файл f. Вывести на печать последнюю из строк длиною 45 символов.

  19. Дан текстовый файл f. Исключить пробелы, стоящие в начале его строк. Результат поместить в файл f1.

  20. Дан текстовый файл f. Записать в файл g строки, содержащие менее 50 символов.