Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Рацеев.Лабораторные по информатике

.pdf
Скачиваний:
80
Добавлен:
18.04.2015
Размер:
680.77 Кб
Скачать

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Информатика»

 

 

 

 

 

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

 

5

 

i

Например, для N=5:

 

 

X

 

 

i 1

 

 

X i2 1 i

 

 

 

 

 

X

1

 

 

 

 

 

 

 

X 2

 

 

5

 

 

1

 

 

 

X

 

 

 

i

2

 

 

 

 

 

i 2

 

 

 

X 2

 

 

i

 

 

 

 

 

 

1 i

17.Для заданного одномерного массива D из N элементов найти количество элементов массива, для которых выполняется условие Di > i. Рекурсивную функцию применять каждый раз отдельно для первого элемента массива и для остальной его части. Рекурсивные вызовы заканчивать, когда останется только один элемент.

 

4

1

4

 

Например, для N=4:

Count Di

i Count Di

i Count Di

i

 

i 1

i 1

i 3

 

18.Для заданного одномерного массива B из N элементов найти значение максимального элемента массива и его номер. Рекурсивную функцию применять каждый раз отдельно для первого элемента массива и для остальной его части. Рекурсивные вызовы заканчивать, когда останется только один элемент.

 

4

 

4

 

Например, для N=4:

Max Bi

max Bi

; Max Bi

 

i 1

 

i 2

 

19.Для заданного одномерного массива Y из N элементов проверить, что существует по крайней мере один элемент Yi, для которого выполняется условие

Y

2

2 . Рекурсивную функцию применять каждый раз отдельно для первой

i

 

i

 

 

трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

 

9 Y 2

 

 

 

3 Y 2

 

 

9 Y 2

 

 

, ( – «или»)

Например, для N=9:

 

i

2

 

 

i

2

 

 

 

i

2

 

 

 

 

 

 

i

 

 

i

 

 

i

 

 

i 1

 

 

 

i 1

 

 

i 4

 

 

 

20.Для заданного одномерного массива X из N элементов найти произведение

множителей, вычисляемых

по

формуле

X i4 3X i2 .

 

Рекурсивную функцию

применять каждый раз отдельно для первой трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

6

2

6

 

Например, для N=6: X i4

3X i2 X i4

3X i2 X i4 3X i2

i 1

i 1

i 3

 

21.Для заданного одномерного массива A из N элементов найти количество элементов массива, для которых выполняется условие i2 > |Ai|. Рекурсивную функцию применять каждый раз отдельно для первой трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

 

12

4

12

 

 

 

 

 

Например, для N=12:

Count i 2

 

 

Ai

 

Count i 2

 

 

Ai

 

Count i 2

 

 

Ai

 

 

 

 

 

 

 

 

 

i 1

 

 

 

 

i 1

 

 

 

 

i 5

 

 

 

 

 

23

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Информатика»

 

 

 

 

 

22.Для заданного одномерного массива B из N элементов найти значение минимального значения выражения sin Bi. Рекурсивную функцию применять каждый раз отдельно для первой трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

9

 

3

9

 

Например, для N=9: Min sin Bi min Min sin Bi

; Min sin Bi

 

i 1

 

i 1

i 4

 

23.Для заданного одномерного массива Z из N элементов найти сумму выраже-

ний, вычисляемых по формуле 2X i

cos X i2 . Рекурсивную функцию применять

каждый раз отдельно для первой трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

12

4

12

Например, для N=12: 2X i cos X i2

2X i cos X i2

2X i cos X i2

i 1

i 1

i 5

24.Для заданного одномерного массива Z из N элементов найти значение мак-

симального значения выражения sin Zi2

Zi

 

. Рекурсивную функцию приме-

i

2

 

 

нять каждый раз отдельно для первой трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

Например, для N=9:

9

 

2

 

 

 

 

Max sin Zi

 

i 1

 

 

 

Z

 

 

3

 

 

 

i

 

max

 

sin Z 2

 

 

 

i 2

Max

 

i

 

 

i 1

 

 

Z

9

 

Z

 

 

 

Max

 

i

 

 

 

 

i

 

;

 

sin Z 2

 

i

 

 

i

 

 

i

 

2

i 4

 

 

 

2

24

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Информатика»

 

 

 

 

 

Лабораторная работа № 10.

ТЕМА: ФАЙЛОВЫЕ СТРУКТУРЫ ДАННЫХ. ТЕКСТОВЫЕ ФАЙЛЫ

Текстовый файл – последовательность строк, причем каждая строка заканчивается символом ‘\n’ и дополнена символом ‘\0’. Текстовый файл состоит из обычных печатных символов (в кодах ASCII), включая пробелы, символы новой строки, символы табуляции. Например, в текстовом файле целое число 123 представлено тремя символами-цифрами ‘1’, ‘2’ и ‘3’, которые в файле расположены друг за другом, образуя слово “123”.

ЗАДАНИЕ:

Составить программу, выполняющую преобразования над текстовыми файлами согласно указанному варианту. Исходные текстовые файлы создаются при помощи редактора текста и должны содержать несколько (не менее 8) различных строк символов.

ОПРЕДЕЛЕНИЯ:

ЦЕПОЧКА – непрерывная последовательность символов, не содержащая неотображаемых символов. (Считается, что длина цепочки не превосходит 30 символов).

СЛОВО – цепочка, ограниченная пробелами или неотображаемыми символами.

РЕГУЛЯРНОЕ СЛОВО – слово, состоящее только из больших английских

букв.

ПАЛИНДРОМ – это слово, в котором символы при просмотре слева направо и справа налево совпадают.

ЧИСЛО – цепочка, состоящая только из символов цифр. ПРИМЕЧАНИЯ:

Вначале программы в диалоговом режиме следует задать имена файлов, с которыми будет работать программа. Если в исходных файлах отсутствует объект для обработки, следует вывести об этом текстовое сообщение, например: “В файле FileIn1.dat палиндромов нет!”

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

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

ВАРИАНТЫ ЗАДАНИЙ.

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

25

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Информатика»

 

 

 

 

 

первого и второго файлов, из которых удалены все совпадающие (одинаковые) слова.

2.Вывести на экран дисплея количество ЧИСЕЛ, обнаруженных в исходном файле, их общую сумму, пропуская числа, которые заключены между парами указываемых в диалоге начальных и конечных слов. Оставшиеся числа переписать в другой файл.

3.Скопировать исходный файл в другой, удалив ПАЛИНДРОМЫ в промежутке между указанными начальной цепочкой и конечной цепочкой. На экран вывести количество скопированных и удаленных слов.

4.Даны два текстовых файла. Напечатать количество символов каждого вида (БУКВ, ЦИФР, ЗНАКОВ) в первом и втором файлах. В третий файл вывести все РЕГУЛЯРНЫЕ СЛОВА, встречающиеся и в первом, и во втором файлах.

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

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

7.Соединить два файла в третий, добавив после содержимого первого файла только те строки второго файла, в которых имеются числа-палиндромы.

8.Вставить после указанной строки одного файла определенное число строк другого файла, начиная с заданной строки. Результаты поместить в отдельный файл с выводом на экран количества строк и ЧИСЕЛ в этом файле.

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

10.Скопировать из файла за один просмотр все РЕГУЛЯРНЫЕ СЛОВА во второй файл, а все ЧИСЛА – в третий. Вывести на экран количество ПАЛИНДРОМОВ исходного файла, количество слов и СЛОВ-ЧИСЕЛ в полученных файлах.

11.Дан текстовый файл. Выбрать из первого файла слова, не имеющие в своем составе знаков. Эти слова записать во второй файл построчно в алфавитном порядке в следующем виде: <слово> <-> <количество повторений в файле>.

26

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Информатика»

 

 

 

 

 

12.Соединить два файла в третий, добавив после содержимого первого файла только те строки второго файла, в которых имеются слова, отсутствующие в первом файле.

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

14.Заменить в файле каждое вхождение указанной цепочки на заданную другую цепочку (возможно, другой длины) в группе из K строк, начиная со строки N. На экран дисплея вывести количество замененных цепочек.

15.Каждое слово исходного файла, не имеющего в своем составе одновременно цифры и знака, вывести в выходной файл в отдельную строку. За словом в скобках вывести символы слова в десятичных кодах через пробел. Например: ForNtoM (70 111 114 78 116 111 77) и т. д.

16.Скопировать из одного файла в другой последовательность строк, заданных начальным и конечным порядковыми номерами от начала файла. На экран вывести количество скопированных символов букв и число скопированных слов, являющихся ПАЛИНДРОМАМИ.

17.Имеется файл, содержащий РЕГУЛЯРНЫЕ СЛОВА и файл, содержащий в символьном виде ЧИСЛА и нерегулярные слова. Вывести в третий файл только регулярные слова из первого файла, для которых во втором файле имеется число, равное их длине.

18.Из исходного файла скопировать во второй файл все РЕГУЛЯРНЫЕ СЛОВА, не содержащие гласных букв, разделив их пробелами, а в третий – все ЧИСЛА, подсчитав их общую сумму. (Гласные буквы: A,E,I,O,U).

19.Из исходного файла во второй файл скопировать слова, не содержащие цифр, причем после каждого слова напечатать в угловых скобках его длину. Например: ABCDEF<5>, XYZ<3> и т. д. В третий файл скопировать все РЕГУЛЯРНЫЕ СЛОВА, в которых находится более двух одинаковых символов.

20.Переписать содержимое двух файлов в третий, подсчитав количество всех символов (кроме пробелов), количество ПАЛИНДРОМОВ и удаляя (отбрасывая) встречающиеся СЛОВА-ЧИСЛА.

21.Даны два файла. Подсчитать для каждого слова первого файла количество совпадающих с ним ЦЕПОЧЕК из второго файла. Результат занести в третий файл в виде строки, в которую записать это слово и в скобках число обнаруженных цепочек.

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

27

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Информатика»

 

 

 

 

 

начала файла. После завершения обработки файла напечатать количество обработанных слов.

Например: Date:06/08/96 <12,29> Time:14:05:11 <13,12> и т. д.

23.Даны два файла. Найти в них несовпадающие слова, имеющие не менее 2 цифр. Вывести каждое такое слово в отдельную строку. За словом в скобках вывести символы слова в шестнадцатеричном виде через пробел.

Например: z1s2k4M (7A 31 73 32 6B 34 4D) и т. д.

24.Вставить после указанной строки (по номеру от начала) одного файла все строки другого файла, не содержащие СЛОВ-ЧИСЕЛ. Результат поместить в третий файл с выводом на экран количества строк в этом файле.

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

26.Найти в файле цепочки символов с помощью задаваемого шаблона и вывести их в другой файл, на экране напечатать их количество. Шаблон задается последовательностью из букв и знаков <+> и <*>. Символ <+> означает один любой символ, а символ <*> – произвольную цепочку символов длиной от 1 до 3 символов.

Пример: по шаблону <AA+D*K> могут быть выбраны цепочки: <AA3D-K>,

<AAtDZXK>, <AAvDf=fK> и т. д.

28

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Информатика»

 

 

 

 

 

Лабораторная работа № 11.

ТЕМА: ФАЙЛОВЫЕ СТРУКТУРЫ. ДВОИЧНЫЕ ФАЙЛЫ

ЦЕЛЬ:

Изучение методов работы с двоичными файлами, с меню, с рекурсивными процедурами и функциями.

ОПРЕДЕЛЕНИЯ:

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

struct FileRec

{

Type1 Field1;

Type2 Field2;

.............

};

Для записи и чтения данных в двоичном формате используются соответственно функции fwrite() и fread().

ЗАДАНИЕ:

Заданы типы входного (FIn) и выходного (FOut) файлов.

Разработать программу, основной блок которой в режиме МЕНЮ позволяет выбрать и запустить рабочие процедуры следующего назначения:

1.Создание двоичного файла данных, элементами которого являются записи со структурой, указанной в Вашем варианте. Процедура запрашивает имя (NameFIn) и создает файл с этим именем.

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

3.Добавление в конец входного файла (FIn) новых записей со структурой, указанной в Вашем варианте.

4.Просмотр записей во входном файле (FIn) последовательно от первой до последней с возможностью досрочного окончания просмотра по нажатию клавиши ESC.

5.Просмотр записей в файле результатов (FOut) последовательно от первой до последней с возможностью досрочного окончания просмотра по нажатию клавиши ESC.

6.Обработка данных из входного файла (FIn) по заданию Вашего варианта и вывод результатов в файл (FOut) и, если это надо по заданию, на экран.

29

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Информатика»

 

 

 

 

 

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

ПРИМЕЧАНИЯ:

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

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

Enter.

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

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

ВАРИАНТЫ ЗАДАНИЙ.

1. КНИЖНЫЙ МАГАЗИН Входной файл содержит структуры:

struct Rec1

{

int nomer;

{номер записи в файле}

char name[20];

{фамилия автора}

char nazv[30];

{название книги}

int year;

{год издания}

float price;

{цена}

};

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

Требуется в выходной файл (FOut) записать все те записи о книгах, которые являются самыми дорогими, причем записи должны располагаться в порядке возрастания значений поля year:

struct Rec2

{

char name[20];

{фамилия автора}

char nazv[30];

{название книги}

int year;

{год издания}

float price;

{цена}

};

30

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Информатика»

 

 

 

 

 

2. ЧАСТОТНЫЙ СЛОВАРЬ Входной файл содержит структуры:

struct Rec1

{

int nomer;

{номер записи в файле}

char word[30];

{слово}

};

Во входном файле (FIn) задана последовательность слов, состоящих только из латинских букв.

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

Полученный словарь записать в выходной файл (FOut) типа: struct Rec2

{

char word[30];

{ слово словаря }

int frequency;

{ частота }

};

3. СЛОЖЕНИЕ ОЧЕНЬ ДЛИННЫХ ЧИСЕЛ Входной файл содержит структуры:

struct Rec1

{

int nomer; {номер записи в файле} char pole1[64], pole2[64];

};

Вычислить выражение <Pole1>+<Pole2>, где <Pole1> и , <Pole2> – это натуральные числа, символьные изображения которых находятся в Pole1 и

Pole2.

Результаты вычислений поместить в файл результатов типа: struct Rec1

{

int nomer; {номер записи в файле} char rez[65];

};

4. УМНОЖЕНИЕ ОЧЕНЬ ДЛИННЫХ ЧИСЕЛ Входной файл содержит структуры:

struct Rec1

{

31

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Информатика»

 

 

 

 

 

int nomer;

{номер записи в файле}

char pole1[10], pole2[10];

};

 

Перемножить

натуральные числа <Pole1> и <Pole2>, цифры которых

находятся в Pole1 и Pole2.

Результаты вычислений поместить в файл (FOut) типа: struct Rec2

{

 

int nomer;

{номер записи в файле}

char rez[100];

 

};

 

5. ПЕРЕВОД ЧИСЕЛ В ДРУГУЮ СИСТЕМУ СЧИСЛЕНИЯ Входной файл содержит структуры:

struct Rec1

{

long nomer;

{номер записи в файле}

long a;

{число в 10-тичной системе}

unsigned char basis;

{основание новой системы счисления}

};

Во входном файле задана последовательность десятичных чисел. Получить последовательность тех же чисел, но в системе счисления, определяемой полем “Basis” (значение которого может быть от 2 до 16), и в символьном представлении. Дополнительные цифры отобразить буквами ‘A’, ‘B’, ‘C’, ‘D’ и т. д.

Полученные числа записать в выходной файл (FOut) типа: struct Rec2

{

long nomer;

{номер записи в файле}

char Rez[100];

 

};

6. СОЗДАНИЕ ИНДЕКСНЫХ ФАЙЛОВ Входной файл содержит структуры:

struct Rec1

{

long nomer;

{номер записи в файле}

char fam[20];

{Фамилия}

char name[20];

{Имя}

int age;

{Возраст}

};

32