Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Лабораторная работа №10. Файлы






 

Цель работы: приобретение навыков программирования при решении задач с использованием типа файл.

 

Отчет на лабораторную работу должен содержать:

- задание по варианту;

- листинг программы, записанного по правилам языка Си/Си++ (все значения для вычисления ввести с клавиатуры.);

- составить блок-схему данного алгоритма;

- скриншот результата программы

10.1 Варианты заданий

1. Дан файл f, компоненты которого являются дейст­вительными числами. Найти:

а) сумму компонент файла f;

б) последнюю компоненту файла.

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

а) наименьшее из значений компонент с четными но­мерами

б) разность первой и последней компонент файла.

3. Дан символьный файл f. В файле f не менее двух компонент. Определить, являются ли два первых символа файла цифрами. Если да, то установить, является ли число, образованное этими цифрами, четным.

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

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

6. Дан файл f, компоненты которого являются целыми числами. Никакая из компонент файла не равна нулю. Файл f содержит столько же отрицательных чисел, сколько и положительных. Используя вспомогательный файл h, переписать компоненты файла f в файл g так, чтобы в файле g:

а) не было двух соседних чисел с одним знаком;

б) сначала шли положительные, потом отрицательные числа.

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

8. Даны символьные файлы f и g. Определить, сов­падают ли компоненты файла f с компонентами файла g. Если нет, то получить номер первой компоненты, в кото­рой файлы f и g отличаются между собой. В случае, ко­гда один из файлов имеет n компонент (n ≥ 0) и повторяет начало другого (более длинного) файла, ответом должно быть число n+1.

9. Дан символьный файл f. Группы символов, раз­деленные пробелами (одним или несколькими) и не содер­жащие пробелов внутри себя, будем называть словами. Удалить из файла все однобуквенные слова и лишние пробелы. Результат записать в файл g.

10. Дан символьный файл f, содержащий сведения о сотрудниках учреждения, записанные по следующему образцу: фамилия _ имя _ отчество, фамилия _ имя _ отче­ство,... Записать эти сведения в файле g, используя образцы:

а) имя _ отчество _ фамилия, имя _ отчество _ фами­лия,...;

б) фамилия _ и.o., фамилия _ и.о.,...

11. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Дан файл f, содержащий информацию о багаже нескольких пассажиров, информация о багаже каждого отдельного пассажира представляет собой соответствующую пару чисел.

а) Найти число пассажиров, имеющих более двух вещей, и число пассажиров, количество вещей которых превосходит среднее число вещей.

б) Определить, имеются ли два пассажира, багажи которых совпадают по числу вещей и различаются по весу не более чем на 0, 5 кг.

12. Сведения об ученике состоят из его имени и фами­лии и названия класса (года обучения и буквы), в котором он учится. Дан файл f, содержащий сведения об учениках школы.

а) Выяснить, имеются ли однофамильцы в каком-нибудь классе.

б) Собрать в файле g сведения об учениках 9-х и 10-х классов, поместив вначале сведения об учениках класса 9а, затем 9б и т. д., затем 10а, 106 и т. д.

13. Сведения об автомобиле состоят из его марки, номера и фамилии владельца. Дан файл f, содержащий сведения о нескольких автомобилях. Найти:

а) фамилии владельцев и номера автомобилей данной марки;

б) количество автомобилей каждой марки.

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

а) цену самого дорогого конструктора, оформленную по образцу... тенге... тиын.;

б) можно ли подобрать игрушку, любую, кроме мяча, подходящую ребенку 3 лет, и дополнительно мяч так чтобы суммарная стоимость игрушек не превосходил 5 тенге?

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

а) занимает не более одной строки файла f;

б) может занимать произвольное число строк файла.

 

10.2 Методические указания к выполнению лабораторной работы

Под файлом понимается либо наименованная область внешней памяти ПК, либо логическое устройство - потенциальный источник или приемник информации. Файл представляет собой совокупность компонент одного типа. Типом компонентов может быть любой тип языка Си(Си++) кроме файлов. Различают 2 вида файлов: текстовые и бинарные. Указатели на файлы необходимо объявлять. Синтаксис объявления такого указателя следующий:

FILE *указатель на файл;

Пример: FILE *f;

Для работы с файлом необходимо сделать следующие шаги:

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

- закрыть файл;

- ввод файла;

- вывод файла.

Для открытия файла используется функция f=fopen(“ имя_файла ”, ” режим ”);

Пример:

FILE *f;

f=fopen (" D: \LAB1.СPP", " w"); //открытие файла для записи

// Если соответствующий физический файл

// существует, он будет перезаписан

Для закрытия файла используется функция

fclose(имя_указателя);

Пример: fclose(f);

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

fgetс() - читает и возвращает символ из открытого файла

Синтаксис: int fgets(FILE *fp);

fgets(0 - Считывает строку из файла stream до тех пор, пока не будут считаны n-1 символов, либо символ перевода строки, либо достигнут конец файла. Возвращает указатель на string, в случае ошибки или при достижении конца файла- NULL-указатель

Синтаксис: char * fgets(char *string, int n, FILE * stream);

для решения задачи по обработке файлов.

fgetchov() - Читает и возвращает символ из файла stdin

Синтаксис:

int fgetchov(void);

ungetc() - Возвращает символ ch в файл. Следующая операция чтения символа из файла вернет этот символ

Синтаксис: int ungetc(int ch, FILE *fp);

fputs() - Записывает в файл код ch символа

Синтаксис: int fputs(int ch, FILE *fp)

gets () - Читает байты из файла stdin и записывает их в строку S до тех пор, пока не встретит символ ' \n ', который заменяется на нуль-терминатор

Синтаксис:

int gets (char *S);

fgets () - Извлекает байты из файла, описываемого fp, и записывает их в строку S до тех пор, пока не встретит символ ' \n ' или пока не будет считано m байтов

Синтаксис:

int fgets (char *S int m, FILE *fp);

fputs () - Записывает в файл байты из строки S до тех пор, пока не встретится нуль-терминатор, который в файл не переносится и на символ ' \n ' не заменяется

Синтаксис:

int fputs (char *S, FILE *fp);

puts () - Записывает в файл stdout байты из строки S до тех пор, пока не встретится нуль-терминатор, который в файл переносится и заменяется на символ ' \n '

Синтаксис:

int puts (char *S);

freаd()- Считывает n блоков по size байт каждый из файла fp в область памяти, на которую указывает указатель ptv (необходимо заранее отвести память под считываемый блок)

Синтаксис:

int freаd (void *ptv, int size, int n, FILE *fp);

fwrite()- Записывает n блоков по size байт каждый из области памяти, на которую указывает ptv, в открытый файл fp

Синтаксис:

int fwrite (void *ptv, int size, int n, FILE *fp);

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

Синтаксис:

int fprintf (void *ptv, format-string [, argument...]);

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

Синтаксис:

int fscanf (void *ptv, format-string [, argument...]);

fseek () - перемещает указатель, соответствующий потоку stream, на новое место расположения, отстоящее от origin на offset байтов.

Синтаксис:

int fseek (stream, offset, origin);

 

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

1. Укажите правила открытия файла в языке С.

2. Укажите правила открытия файла в языке С.

3. Основные положения работы с файлами прямого доступа

4. Какие четыре шага необходимы для работы с файлами?

5. Для чего используются режимы при открытии файла?

6. Какие типы файлов бывают?

7. Напишите синтаксис форматированного ввода в файл.

8. Напишите синтаксис форматированного вывода в файл.

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.