{
char name[64];
int age;
float salary;
} worker = { "Джон Дой", 33, 25000.0 };
ofstream emp_file("EMPLOYEE.DAT");
emp_file.write((char *) &worker, sizeof(employee));
}
Функция write() обычно получает указатель на символьную строку. Символы (char *) представляют собой оператор приведения типов, который информирует компилятор, что передается указатель на другой тип. Подобным образом следующая программа STRU_IN.CPP использует метод read() для чтения из файла информации о служащем:
#include <iostream.h>
#include <fstream.h>
Void main(void)
{
Struct employee
{
char name [6 4];
int age;
float salary;
} worker = { "Джон Дой", 33, 25000.0 };
ifstream emp_file("EMPLOYEE.DAT");
emp_file.read((char *) &worker, sizeof(employee));
cout << worker.name << endl;
cout << worker.age << endl;
cout << worker.salary << endl;
}
Задание на РГЗ 1
ИСПОЛЬЗОВАНИЕ СТРУКТУР ДАННЫХ ПРИ РЕШЕНИИ ЗАДАЧ
Цель работы
1. Научиться разрабатывать структуры данных;
2. Научиться разрабатывать программы с агрегатами данных;
3. Закрепить навыки создания исходного кода, его компиляции, компоновки и отладки.
Задание
1. Составить программу обработки данных в виде структур. Исходные данные организовать в виде массива структур и его инициализацию выполнить из файла с данными с форматом txt.
|
|
2. Разработать интерфейс пользователя в виде меню из нескольких пунктов (например, чтение данных из файла; вывод данных на экран дисплея; выборка данных из массива структур; вывод на экран результатов обработки данных; выход из программы и др.).
Отчет о работе должен содержать:
· титульный лист;
· постановку задачи;
· описание идентификаторов, используемых в программе;
· алгоритм решения задачи;
· блок-схему всей задачи;
· текст программы;
· результаты отладки и работы программы по каждому пункту меню.
Варианты задания
1. Создать файл, содержащий сведения о сдаче студентами сессии. Структура записи: индекс группы, фамилия студента с его инициалами, оценки по четырем экзаменам и пяти зачетам («з» означает зачет, «н» – незачет). Экзамены и зачеты нумеровать цифрами. Количество записей в файле не менее двадцати.
Разработать программу, выводящую следующую информацию:
· фамилии неуспевающих студентов с указанием индексов групп и вида задолженности;
· фамилии студентов, сдавших все зачеты и получившие на экзаменах четверки и пятерки;
· средний бал, полученный каждым студентом.
2. Создать файл, содержащий сведения о сдаче студентами сессии. Структура записи: фамилия студента с его инициалами, оценки по четырем экзаменам, признаки участия в общественной жизни университета (0 – не участвует, 1 – участвует), признаки участия в научно-исследовательской работе (0 – не участвует, 1 – участвует).
Разработать программу, которая по требованию деканата будет выдавать следующие сведения:
|
|
· список студентов, которым назначена повышенная (на 25 %) стипендия за отличную учебу, активное участие в общественной жизни и научно-исследовательской работе;
· список студентов, которым назначена повышенная (на 15 %) стипендия за хорошую и отличную учебу (не менее двух пятерок), активное участие в общественной жизни и научно-исследовательской работе;
· список студентов, которым назначена обычная стипендия, получившим в сессию хорошие и отличные оценки, но не участвующие в общественной жизни и научно-исследовательской работе. Студенту, получившему одну тройку, но активно занимающемуся научной работой, также назначается обычная стипендия;
· список студентов, которым не назначена стипендия (неуспевающим и имеющим более одной тройки).
3. Создать файл, содержащий сведения о студентах. Структура записи: группа, фамилия студента с его инициалами, пол, признаки успеваемости по дисциплинам (1 – тройки и четверки, 2 – тройки, четверки и пятерки, 3 – четверки и пятерки, 4 – отличник), владение специальностью (0 – нет, 1 – повар, 2 – каменщик, 3 – бетонщик, 4 – плотник).
Разработать программу, позволяющую отобрать студентов для участия в стройотряде. По требованию деканата выдавать следующие сведения:
· список всех студентов, владеющих специальностью повара, с указанием успеваемости кандидатов на вакантную должность повара;
· список студентов, владеющих строительной специальностью плотника, с указанием успеваемости для формирования бригады плотников и назначения бригадира;
· список студентов, владеющих строительной специальностью каменщика или бетонщика, для формирования бригады каменщиков и назначения бригадира.
4. Создать файл, содержащий сведения о запрошенных в течение рабочего дня в читальном зале библиотеки учебных пособиях. Структура записи: раздел обозначается цифрой (программирование – 1, математика – 2, физика – 3), автор, название пособия, издательство, год издания.
Составить программу, помогающую библиотечному работнику составить отчет о работе читального зала:
· сведения о выданных учебных пособиях по математике;
· сведения о пособиях, вышедших в свет в текущем году (т.е. сведения о новых поступлениях), по всем разделам;
· сведения о пособиях, написанных конкретным автором.
5. Создать файл, содержащий сведения о студентах. Структура записи: фамилия студента и его инициалы; пол (один символ «м» или «ж»); средний бал за весь период обучения; признак места проживания родителей студента (один символ: К – комсомольчанин, Н – живет в Комсомольском районе, И – иногородний).
Составить программу обработки данных о студентах группы для их распределения по местам работы. Выдавать по требованию деканата следующие сведения:
· список всех студентов, отсортированный по убыванию среднего балла успеваемости за период обучения;
· список студентов-комсомольчан по убыванию среднего балла успеваемости;
· список девушек по убыванию среднего балла успеваемости;
· список юношей по убывания среднего балла успеваемости.
6. Создать файл, содержащий сведения о магазинах. Структура записи: название улицы, номер дома, номер телефона (пять цифр), тип магазина (булочная, гастроном и т.д.).
Составить программу, помогающую администрации района получить следующую информацию:
· сведения обо всех магазинах заданного типа (булочная, гастроном и т.д.);
· сведения обо всех магазинах, находящихся на заданной улице;
· адрес магазина по заданному номеру телефона;
7. Составить программу, помогающую сотрудникам Государственной инспекции безопасности дорожного движения (ГИБДД) обработать следующие данные: регистрационный номер автомобиля, марка автомобиля, цвет автомобиля, год выпуска, адрес владельца. Программа должна по требованию пользователя выдавать следующие сведения:
|
|
· адреса владельцев автомобилей заданной марки, определенного цвета;
· все данные об автомобиле с заданным регистрационным номером;
· все данные об автомобилях с известной цифровой частью регистрационного номера.
8. Составить программу, обрабатывающую следующую информацию о владельцах телефонов: фамилия абонента, год установки телефона, номер телефона, адрес абонента.
Программа должна по запросу пользователя выдавать следующую информацию:
· фамилии абонентов и их номера телефонов;
· список номеров телефонов и адреса абонентов;
· номера телефонов, установленных в определенном году.
9. Создать файл, содержащий сведения об ассортименте игрушек в магазине «Детский мир» по следующим данным: название игрушки, цена, количество, возрастные границы детей, для которых она предназначена (например: 2 – 5, т.е. от двух до пяти лет).
Написать программу, в результате выполнения которой выдаются следующие сведения:
· названия игрушек, которые предназначены для детей одного возрастного периода;
· стоимость самой дорогой игрушки и ее наименование;
· название игрушек, стоимость которых не превышает х рублей и подходит ребенку в возрасте от а до b лет. Значения: х, a, b ввести с клавиатуры.
10. Составить программу, помогающую сотрудникам глазной клиники. Имеются следующие данные о пациентах: фамилия, пол, возраст, место проживания (город), диагноз. Программа должна по требованию выдавать следующую информацию:
· список пациентов старше Х лет с диагнозом Y;
· список пациентов, прибывших на лечение из разных городов.
11. Имеются следующие данные о жителях микрорайона: фамилия, имя, отчество, пол, дата рождения, семейное положение, отношение к воинской службе, домашний адрес. Составить программу, выдающую следующую информацию сотрудникам паспортно-визовой службы:
· список для голосования жителей микрорайона старше 18 лет с указанием необходимых реквизитов;
|
|
· список для военкомата мужчин призывного возраста, не служивших в армии.
12. В файле записана следующая информация о сотрудниках предприятия: отдел предприятия, должность, фамилия и инициалы, пол, дата рождения, семейное положение, домашний адрес, дата поступления на работу.
Составить программу, выдающую следующую информацию сотрудникам отдела кадров:
· список для поздравления сотрудников с днем рождения в заданном месяце;
· список сотрудников, проработавших на предприятии более заданного количества лет для присуждения премии.
13. В файле записаны реквизиты 20 вкладчиков госбанка: номер счета, фамилия и инициалы, домашний адрес, дата операции, приход/расход, сумма вклада. Выдать следующую информацию контролеру госбанка:
· фамилии вкладчиков, посетивших банк в текущем месяце, и их домашний адрес;
· номера счетов, чьи вклады составляют более а рублей, и их реквизиты (переменную а запросить с клавиатуры).
14. В жилищно-эксплуатационном участке (ЖЭУ) необходимо обработать следующую информацию о каждом жильце микрорайона: фамилию и инициалы, адрес, общую жилую площадь, сумму оплаты за все услуги в месяц, дату последней оплаты за все услуги.
Выдать бухгалтеру ЖЭУ следующие документы:
· список задолженников со всеми реквизитами;
· список жителей, не имеющих задолженности на текущий момент времени.
15. В пассажирском автохозяйстве ведется учет состояния автопарка по реквизитам: марка автобуса, его гаражный номер, дата выпуска, дата последнего техосмотра, техническое состояние (требуется техосмотр, текущий ремонт, капитальный ремонт, автобус исправен), фамилия закрепленного за автобусом водителя.
Выдать механику гаража следующую информацию:
· список всех автобусов, годных к эксплуатации;
· список автобусов, требующих ремонтных работ;
· список автобусов, подлежащих техосмотру.
16. В магазине «Игротехника» ведется учет продажи лазерных дисков. Учитывается следующая информация: номер тома (диска), категория диска (игра, музыкальный диск, системное программное обеспечение (ПО), специальное ПО), стоимость диска, дата продажи.
Выдать директору магазина следующие документы:
· сводку продаж лазерных дисков в заданном месяце по категориям и общую сумму выручки;
· ведомость наличия лазерных дисков со всеми реквизитами и общую сумму их стоимости.
17. В поликлинике 5 врач-терапевт имеет следующую информацию о больных: фамилию и инициалы больного, его возраст, место работы, дату приема, диагноз заболевания, выдачу больничного листа. Сформировать и выдать сводную ведомость:
· приема больных со всеми реквизитами за текущий месяц;
· больных, получивших больничный лист, с указанием диагноза заболевания и места работы.
18. Диспетчер принимает заказы на ремонт обуви и выдает квитанции заказчикам, в которых указывает: номер квитанции, дату приема обуви, фамилию заказчика, его адрес, вид обуви, срок исполнения заказа, стоимость работы, фамилию мастера.
Сформировать и выдать следующие документы:
· сводную ведомость работ, выполненных мастерской со всеми реквизитами;
· ведомость работ по датам исполнения заказов и по фамилиям мастеров;
· ведомость заработанной суммы каждым мастером в текущем месяце с указанием общей суммы, полученной мастерской.
19. Секретарь ведет запись посетителей к народному депутату в журнале с указанием реквизитов: даты приема, фамилии и инициалов посетителя, пола, возраста, образования, местожительства, места работы, решаемого вопроса. Выдать народному депутату следующие документы:
· список посетителей на конкретный день приема с полными реквизитами;
· сводный список всех посетителей с указанием фамилии, возраста, пола, места работы.
20. На складе ведется учет поступления материалов по следующим реквизитам: дата поступления материала, наименование материала, единица измерения, стоимость единицы измерения, количество.
Выдать следующие документы заведующему складом:
· сводную ведомость поступивших материалов со всеми реквизитами;
· ведомость материалов, имеющихся на складе, с указанием их единиц измерения, количества, стоимости единицы измерения, общей суммы материала.
21. Для учёта вырабатываемой продукции хлебозавод использует следующие реквизиты: наименование изделия, сорт, единицы измерения, количество, дата выработки, срок реализации. Создать следующие документы:
· сводную ведомость изделий хлебозавода со всеми реквизитами;
· ведомость изделий хлебозавода, срок реализации которых не более 48 часов, со всеми реквизитами.
22. Аккумуляторный завод выпускает продукцию, для учёта которой использует следующие реквизиты: наименование изделия, дату выпуска, срок гарантии, количество выпущенной продукции, стоимость единицы изделия. Выдать пользователю следующие документы:
· сводную ведомость изделий со всеми реквизитами;
· список изделий, изготовленных в текущем месяце, с указанием полной стоимости изделий.
23. Трамвайное предприятие ведет учет выпущенного на линию транспорта, используя следующие реквизиты: номер маршрута, гаражный номер трамвая, фамилию водителя, время одного рейса (в минутах), количество рейсов в смену.
Выдать диспетчеру трамвая следующую информацию:
· полный список трамваев на линии со всеми реквизитами;
· список трамваев на конкретном маршруте со всеми реквизитами;
· количество отработанных часов каждым водителем трамвая.
24. На метеостанции учет данных о погоде с интервалом в один час ведется по следующим реквизитам: дате, времени, температуре, давлению, влажности, виду осадков (0 – осадков нет, 1 – дождь, 2 – снег), видимости в метрах. Аэропорт запрашивает следующие данные:
· данные о погоде на заданное число в заданный интервал времени со всеми реквизитами;
· среднюю температуру воздуха на заданное число;
· время, в которое была максимальная видимость.
25. На проходной режимного предприятия ведется учет работников предприятия по следующим реквизитам: дата входа, табельный номер, фамилия и инициалы, номер цеха, время входа, время выхода.
Отдел кадров предприятия запрашивает следующие данные:
· список работников, вышедших на работу в указанный день со всеми реквизитами;
· количество часов рабочего времени каждого работника данного цеха;
· количество часов рабочего времени конкретного работника данного цеха за регистрируемый промежуток времени.