Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ИНФОРМАТИКА_2009.doc
Скачиваний:
17
Добавлен:
02.06.2015
Размер:
1.08 Mб
Скачать

Задание 13. Файлы

1 Напишите программу которая использует операцию sizeof для определения числа байтов различных типов данных в том числе и пользовательских Напишите результат в файл size.dat, чтобы его можно было распечатать Формат результата в файле должен быть следующий:

Тип данных Размер

char 1

unsigned char 1

short int 2

unsigned short int 2

int 4

unsigned int 4

long int 4

unsigned long int 4

float 4

double 8

long double 16

Замечание: размер стандартных типов данных на вашем компьютере может отличаться от приведенного списка

2 Проводится инвентаризация склада металлических изделий чтобы установить сколько всего изделий находится на складе а также количество и стоимость каждого изделия Напишите программу которая создала бы файл произвольного доступа met.dat на сотню пустых записей позволяла бы вводить данные по каждому изделию давала бы возможность получать список всех изделий удалять записи по изделиям которых уже нет и позволяла бы обновлять любую информацию в файле Ключом должен быть идентификационный номер изделия Следует использовать следующую информацию для работы с файлом:

Номер записи

Название инструмента

Количество

Стоимость

3

Дрель ручная

7

12360

17

Молоток

76

2789

68

Отвертка

106

1545

83

Гаечный ключ

27

1853

56

Электропила

5

127636

3 Создать файл содержащий сведения о товарах хранящихся на складе: шифр наименование товара количество единиц стоимость единицы Все записи должны быть отсортированы в порядке возрастания шифра товара Иметь возможность по введенному коду сделать корректировки: а)изменить/добавить запись о товаре с шифром ХХХ; б)удалить запись о товаре с шифром ХХХ; в) получить информацию о всех товарах в наименовании которых содержится заданный ключ

4 Создать файл содержащий сведения об ассортименте обуви в магазине Структура записи: артикул наименование размер количество пар стоимость одной пары Артикул начинается с буквы Д для дамской с буквы М - для мужской и с буквы С – для детской обуви Написать программу выдающую следующую информацию: а)наличие и стоимость обуви артикула ХХ; б)список дамской обуви заданного размера с указанием наименования и в)имеющееся в наличии число пар каждой модели мужской обуви

5 Создать файл с текстом в котором начало каждого абзаца отмечено символом ‘@’. Отредактировать этот текст по следующим правилам: а)первая строка имеет отступ k позиций; б)все строки текста кроме последней строки каждого абзаца должны иметь фиксированную длину n; в)при редактировании слова не переносятся г)знак препинания не отделяется от слова за которым он стоит д)строки выравниваются за счет дополнительно вносимых пробелов

6 В текстовом файле заменить все последовательности идущих подряд пробелов одним пробелом те “сжать” файл Новый файл не создавать

7 Найти максимальную длину строки в текстовом файле и вывести все строки файла имеющие такую длину

8 В файле находятся только целые числа Определить имеет ли последовательность чисел находящихся в файле нечетную длину и если да то переменной sred присвоить значение среднего элемента файла В противном случае присвоить этой переменной значение первого числа файла

9 В текстовый файл вставить пробелы таким образом чтобы каждая строка имела длину 80 символов (пробелы в строке должны быть вставлены равномерно)

10 Каждая строка файла содержит название горной вершины и её высоту Используя структуру для описания понятия вершина получить название самой высокой вершины по данным файла

11 Из текстового файла выбросить все пробельные символы Новый файл не создавать

12 Каждая строка файла содержит следующие данные: пол имя рост Вывести на экран средний женский рост и имя самого высокого мужчины по данным файла Использовать структуру для описания понятия человек

13 В файле находится текст программы на языке С++ Создать выходной файл в который переписать содержимое исходного файла убрав комментарии из текста программы

14 Написать программу которая работает в одном из двух режимов Если в текущем каталоге имеется файл tabl.txt то вывести на экран построчно его содержимое В противном случае создать файл с таким же именем и записать туда таблицу умножения для чисел от 2 до 9

15 Подсчитать количество пустых строк в текстовом файле

16 Используя структуру для определения понятия студент (состоит из полей: ФИО оценки в сессию) вывести фамилии и имена отличников и долю их от общего количества студентов (Данные находятся в файле)

17 Используя структуру с полями пол ФИО возраст вывести количество девушек по имени “Елена” и имена тех кому 19 лет (Данные находятся в файле)

18 В файле находятся вещественные числа Определить количество положительных чисел, отрицательных чисел и нулей в файле

19 Написать программу записи в файл и чтения из файла элементов массива структур для регистрации автомашин с полями: марка машины год выпуска цвет номер

20 В текстовом файле подсчитать количество строк которые начинаются с буквы f ’.

21 В текстовом файле подсчитать количество строк которые начинаются и оканчиваются одной и той же буквой

22 Проверить наличие баланса всех видов скобок в текстовом файле

23 Дан текстовый файл F1. Переписать его содержимое в файл F2, разбив на строки таким образом чтобы каждая строка либо оканчивалась точкой либо содержала 40 литер если среди них нет точки

24 Создать два файла содержащие сведения об игроках двух хоккейных команд Структура записей файлов: фамилия имя игрока; число заброшенных шайб число сделанных голевых передач По данным извлекаемым из этих файлов создать новый файл содержащий сведения о двух самых результативных игроках обеих команд

25 Написать программу сравнения двух файлов: должна выводиться первая строка в которой они различаются Если файлы идентичны сообщить это

26 В файле находятся вещественные числа Определить количество элементов файла величина которых меньше среднего арифметического всех элементов данного файла

27 Создать файл содержащий сведения о том какие из пяти предложенных дисциплин желают слушать студенты Структура записи: фамилия студента номер группы средний балл пять дисциплин где ‘*’ показывает выбранную дисциплину Создать файл содержащий данные о том кто желает прослушать дисциплину ХХ Если желающих больше десяти то отобрать тех студентов у которых более высокий средний балл

28 Создать файл содержащий сведения о композиторах Структура записей файла: ФИО название песни её продолжительность год создания Вывести название первой песни каждого композитора

29 Создать файл содержащий сведения о книгах в библиотеке Структура записи: шифр книги автор название год издания местоположение (номер стеллажа полки) Предусмотреть возможность корректировки файла по вводимому коду например: 1 – удалить запись (по шифру ХХ); 2 – добавить новую запись; 3 – изменить запись (по введенной фамилии автора и названию книги); 4 – получить информацию о книге с шифром ХХ

30 Создать файл содержащий сведения о результатах экзаменов группы студентов Предусмотреть возможности корректировки записей в файле (пересдача досдача экзаменов) В выходной файл записать результаты анализа: фамилии отличников фамилии студентов сдавших экзамены на 4 и 5 и в срок средний балл по каждому экзамену и по каждому студенту

Пример 1

//Фрагмент программы по обслуживанию банковских счетов

//Создание, чтение и печать последовательного файла

#include<iostream.h>

#include<fstream.h>

#include<iomanip.h>

#include<stdlib.h>

void outputLine(int,char*,float);

main()

{

ofstream outClientFile("clients.dat",ios::out);

if(!outClientFile) {

cerr<<"Файл не может быть открыт для записи"<<endl;

exit(1); } //прототип в stdlib.h

cout<<"Введите счет, имя и баланс."<<endl

<<"Введите EOF для окончания ввода."<<endl<<"?";

int account;

char name[10];

float balance;

while(cin>>account>>name>>balance) {

outClientFile<<account<<' '<<name<<' '<<balance<<endl;

cout<<"? "; }

outClientFile.close();

ifstream inClientFile("clients.dat",ios::in);

if(!inClientFile) {

cerr<<"Файл не может быть открыт для чтения"<<endl;

exit(1); }

cout<<endl<<setiosflags(ios::left)<<setw(10)<<"Счет"

<<setw(13)<<"Имя"<<"Баланс"<<endl;

while(inClientFile>>account>>name>>balance)

outputLine(account,name,balance);

return 0;

}

void outputLine(int acct,char*name, float bal)

{

cout.setf(ios::fixed,ios::floatfield);

cout<<setiosflags(ios::left)<<setw(10)<<acct

<<setw(13)<<name<<setw(7)<<setprecision(2)

<<setiosflags(ios::showpoint | ios::right)<<bal<<endl;

}

Пример 2

//Фрагмент программы по обслуживанию банковских счетов

//Создание файла произвольного доступа

//Запись в файл произвольного доступа

//Последовательное чтение из файла произвольного доступа

#include<iostream.h>

#include<fstream.h>

#include<iomanip.h>

#include<stdlib.h>

struct clientData {

int num;

char name[15];

float balance;};

void outputLine(ostream &, clientData);

main()

{

ofstream creatCredit("credit.dat",ios::out);

if(!creatCredit) {

cerr<<"Файл не может быть открыт для создания."<<endl;

exit(1); }

clientData blankClient={0,"",0.0};

for(int i=1;i<=100;i++)

creatCredit.write((char*)&blankClient,sizeof(blankClient));

creatCredit.close();

ofstream outCredit("credit.dat",ios::ate);

if(!outCredit) {

cerr<<"Файл не может быть открыт для записи."<<endl;

exit(1); }

cout<<"Введите номер счета "

<<"(от 1 до 100, 0 - конец ввода)"<<endl<<"? ";

clientData client;

cin>>client.num;

while(client.num>0&&client.num<=100) {

cout<<"Введите фамилию, баланс"<<endl<<"? ";

cin>>client.name>>client.balance;

outCredit.seekp((client.num-1)*sizeof(client));

outCredit.write((char*)&client,sizeof(client));

cout<<"Введите номер счета"<<endl<<"? ";

cin>>client.num; }

outCredit.close();

ifstream inCredit("credit.dat",ios::in);

if(!inCredit) {

cerr<<"Файл не может быть открыт для чтения."<<endl;

exit(1); }

cout<<setiosflags(ios::left)<<setw(6)<<"Счет"

<<setw(16)<<"Фамилия"<<setiosflags(ios::right)

<<setw(10)<<"Баланс"<<endl;

inCredit.read((char*)&client,sizeof(clientData));

while(!inCredit.eof()) {

if(client.num!=0) outputLine(cout,client);

inCredit.read((char*)&client,sizeof(clientData)); }

return 0;

}

void outputLine(ostream &output, clientData c)

{

cout.setf(ios::fixed,ios::floatfield);

output<<setiosflags(ios::left)<<setw(6)<<c.num

<<setw(16)<<c.name<<setw(10)<<setprecision(2)

<<setiosflags(ios::showpoint | ios::right)

<<c.balance<<endl;

}

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

  1. Информатика. Базовый курс. 2-е издание / Под ред. С.В. Симоновича. – СПб.: Питер, 2009. – 640 с.: ил.

  2. Гуда А.Н., Бутанова М.А., Нечитайло Н.М., Чернов А.В. Информатика. Общий курс: Учебник / Под ред. академика РАН В.И. Колесникова. – М.: Издательско-торговая корпорация “Дашков и К”; Ростов н/Д: Наука-Пресс, 2007. – 400 с. – (Высш. образование).

  3. Яшин В.Н. Информатика: аппаратные средства персонального компьютера: Учеб. пособие. – М.: ИНФРА –М, 2008. – 254 с. – (Высш. образование).

  4. Акулов О.А., Медведев Н.В. Информатика: базовый курс: Учебник для студентов вузов, бакалавров, магистров, обучающихся по направлениям 552800, 65460 “Информатика и вычислительная техника” / О.В. Акулов, Н.В. Медведев. – М.: Омега – Л, 2004. – 552 с.

  5. Меняев М.Ф. Информатика и основы программирования: учеб. пособие по специальности “Менеджмент организации” / М.Ф. Меняев.- 3-е изд., стер.-Москва: Омега – Л, 2007. -458 с.:ил.

  6. Острейковский ВАИнформатика:Учебдля вузов / ВАОстрейковский. – 4-е изд., стер. - М: Высшшк2007- 511с:ил

  7. Павловская Т.А. С/С++. Программирование на языке высокого уровня.– СПБ.: Питер, 2007. – 461 с.: ил.

  8. Подбельский В.В. Язык C++:учеб.пособие.-5-е изд. - М.:Финансы и статистика, 2008. - 560 с.

  9. Подбельский В.В., Фомин С.С. Программирование на языке Си: учеб. пособие. - 2-е доп. изд. - М.Финансы и статистика, 2007. - 600с.

  10. Колдаев В.Д. Основы алгоритмизации и программирования : Учебное пособие / Под ред. проф. Л.Г. Гагариной. – М. : ИД ”ФОРУМ” : ИНФРА – М, 2006. – 416 с.

  11. Дейтел ХМ., Дейтел П.Дж. Как программировать на С. Четвертое издание. Пер. с англ – М.:ООО “БИНОМ-Пресс”, 2006 г. - 912 с.

  12. Бронштейн И.Н. Справочник по математике для инженеров и учащихся втузов/ И.Н. Бронштейн, К.А. Семендяев - М.:Наука, 1980 г. – 976 с.: ил.