Лабораторная работа № 2. Представление информации в виде структуры
Структура – это составной объект (пользовательский тип данных), совокупность логически связанных данных различного типа, объединенных под одним идентификатором.
Задание
| Краткие теоретические сведения
| 1. Изучить способы организации данных в виде структуры, выполнив программу, записанную в данном пункте.
Дополнить структуру дополнительными сведениями о работниках и вывести их вместе с фамилиями на экран.
| Пример. Пусть надо описать структуру с именем WORKER, содержащую следующие поля: фамилия работника; название занимаемой должности; год поступления на работу.
Необходимо написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий из трех объектов структуры WORKER; вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры; если таких работников нет, то на дисплей должен выводиться соответствующий текст.
В программе, текст которой приведен ниже, структура описана следующим образом:
struct WORKER
{ char F[30];
char Wrk[30];
int Year;
};
Здесь предусмотрены компоненты: F[30]для ввода фамилий, Wrk[30] -для должности, Year- для года поступления на работу.
Запись WORKER a[size]; означает, что a[size]- массив из объектов структуры в количестве size.
Для доступа к членам структуры используется операция принадлежности “. ” (точка): a[i].F, a[i].Wrk, a[i].Year.
| 2. В правой части приведен пример программы, в которой используется указатель на структуру.
Выполнить программу, меняя скорость вывода информации. Написать пояснения к программе.
|
В данном примере используется указатель на структуру. При обращении к структуре с помощью указателя используется операция косвенной адресации “ -> “ (стрелка).
Программа осуществляет отображение на экране программного таймера пользователя. Скорость работы таймера можно регулировать, изменяя макроопределение DELAY.
Функция kbhit()возвращает истину, если нажата какая-либо клавиша на клавиатуре. В противном случае возвращается 0.
| 3. В правой части приведен пример программы, которая осуществляет работу с таблицей данных, содержащей информацию о студентах: №, Фамилия, Год рождения, Факультет.
В программе использована структура.
Проанализировать работу главной функции и функций, входящих в программу.
Добавить операторы выдачи сообщений об ошибках при вводе данных неправильного типа.
|
# include < iostream>
# define kol 30
# define strk 30
int r;
using namespace std;
struct student
{
char name[kol];
int birth;
char fakultet[5];
};
struct student Stud[strk];
struct student bad;
int sch = 0;
| void enter_new()
{
cout< < " Ввод информации" < < endl;
if(sch < strk)
{
cout< < " Строка номер ";
cout< < sch+1;
cout< < endl< < " Фамилия " < < endl;
cin> > Stud[sch].name;
cout< < " Год рождения " < < endl;
cin> > Stud[sch].birth;
cout< < " Факультет " < < endl;
cin> > Stud[sch].fakultet;
sch++;
}
else
cout< < " Введено максимальное кол-во строк";
cout< < " Что дальше? " < < endl;
cin> > r;
}
| void del()
{
int d;
cout< < " \nНомер строки, которую надо удалить (для удаления всех строк нажать 99)" < < endl;
cin> > d;
if (d! = 99)
{
for (int de1 = (d - 1); de1 < sch; de1++)
Stud[de1] = Stud[de1 + 1];
sch = sch - 1;
}
if (d == 99)
for(int i = 0; i < strk; i++)
Stud[i] = bad;
cout< < " Что дальше? " < < endl;
cin> > r;
}
| void change()
{ int n, per;
cout< < " \nВведите номер строки" < < endl;
cin> > n;
do
{ cout< < " Введите: " < < endl;
cout< < " 1-для изменения фамилии" < < endl;
cout< < " 2-для изменения года рождения" < < endl;
cout< < " 3-для изменения факультета" < < endl;
cout< < " 4-конец\n";
cin> > per;
switch (per)
{
case 1: cout< < " Новая фамилия";
cin> > Stud[n - 1].name; break;
case 2: cout< < " Новый год рождения";
cin> > Stud[n - 1].birth; break;
case 3: cout< < " Новый факультет ";
cin> > Stud[n - 1].fakultet; break;
}
} while(per! = 4);
cout< < " Что дальше? " < < endl;
cin> > r;
}
| void out()
{ int sw, n;
cout< < " 1-вывод 1 строки" < < endl;
cout< < " 2-вывод всех строк" < < endl;
cin> > sw;
if(sw == 1)
{ cout< < " Номер выводимой строки " < < endl; cin> > n; cout< < endl;
cout< < " Фамилия ";
cout< < Stud[n - 1].name < < endl;
cout< < " Год рождения ";
cout< < Stud[n - 1].birth < < endl;
cout< < " Факультет ";
cout< < Stud[n - 1].fakultet< < endl;
}
if(sw == 2)
{ for(int i = 0; i < sch; i++)
{ cout< < " Фамилия ";
cout< < Stud[i].name< < endl;
cout< < " Год рождения ";
cout< < Stud[i].birth< < endl;
cout< < " Факультет ";
cout< < Stud[i].fakultet< < endl; }
}
cout< < " Что дальше? " < < endl; cin> > r;
}
| int main()
{ setlocale(LC_CTYPE, " Russian" );
cout< < " Данных нет" < < endl;
cout< < " Введите: " < < endl;
cout< < " 1-для удаления записи" < < endl;
cout< < " 2-для ввода новой записи" < < endl;
cout< < " 3-для изменения записи" < < endl;
cout< < " 4-для вывода записи(ей)" < < endl;
cout< < " 5-для выхода" < < endl;
cin> > r;
do
{
switch(r)
{ case 1: del(); break;
case 2: enter_new(); break;
case 3: change(); break;
case 4: out(); break;
}
}
while(r! = 5);
}
| | 4. В соответствии со своим вариантом разработать программу для работы с таблицей данных по образцу программы п. 3. Определить структурированный тип, меню для работы с массивом структур.
В перечень обязательных должны войти функции:
- ввод элементов структуры с клавиатуры;
- вывод элементов структуры;
- удаление всех структурированных переменных;
- удаление заданной структурированной переменной;
- поиск информации.
№ варианта
| Условие задачи
|
| Горожанин. Ф.И.О., дата рождения, адрес, пол (м, ж). Реализовать выборку по полу и году рождения.
|
| Список клиентов гостиницы. Паспортные данные, даты приезда и отъезда, номер, тип размещения (люкс, одноместный, двухместный, трехместный, апартаменты). Поиск гостя по дате приезда или по фамилии.
|
| Клиенты банка. Ф.И.О., тип счета (срочный, льготный и т. д.), номер счета, сумма на счете, дата последнего изменения. Выбор по номеру счета, по диапазону суммы (< 100, > 100).
|
| Личная библиотека. Автор книги, название, издательство, раздел библиотеки (специальная литература, хобби, домашнее хозяйство, беллетристика и т. д.), происхождение (покупка, кража, подарок) и наличие книги в данный момент. Выбор книг по автору, году; инвентаризация библиотеки (вывод всего списка книг по категориям).
|
| Ломбард. База хранимых товаров и недвижимости: анкетные данные клиента, наименование товара, оценочная стоимость; сумма, выданная под залог, дата сдачи, срок хранения. Выбор товаров по истечении срока хранения, по наименованию товара.
|
| Склад. Наименование товара, цена, количество, процент торговой надбавки (5, 10, 15, 20, 35, 30). Выбор по наименованию, цене. Вывод всего списка товаров на складе с расчетом сумм.
|
| Авиарейсы. Номер рейса, пункт назначения, время вылета, дата вылета, стоимость билета, количество мест. Выбор по пункту назначения, дате вылета.
|
| Ученики. Ф.И.О., класс (цифра+буква) предметы, оценки, средний балл. Выбор по фамилии, выбор по среднему баллу.
|
| Студенты. Ф.И.О., дата поступления, специальность, группа, факультет, средний балл. Выбор по году поступления, фамилии, среднему баллу, группе.
|
| Справочник автомобилей. Марка автомобиля, цвет, заводской номер, дата выпуска, тип кузова (седан, универсал и т. п.), дата последнего техосмотра, владелец. Выбор транспортных средств по владельцу или номеру. Формирование приглашений на техосмотр в соответствии со сроком.
|
| Записная книжка. Ф.И.О, дата рождения, адрес, телефон, место работы или учебы, должность. Автоматическое формирование поздравления с днем рождения (по текущей дате). Поиск по фамилии.
|
| Государство. Наименование, столица, численность населения, площадь, фамилия президента. Выбор государства по названию, занимаемой площади (> заданного значения).
|
| Вокзал. Номер поезда, пункт назначения, дни следования, время прибытия, время отправления. Выбор по пункту назначения, дате. Вывод расписания по времени.
|
| Справочник абитуриента. Наименование вуза, адрес, перечень специальностей, конкурс прошлого года по каждой специальности, размер оплаты при договорном обучении. Выбор по разным критериям: все о данном вузе; все о данной специальности, поиск минимального конкурса по данной специальности.
|
| Преподаватели. Фамилия преподавателя, название экзамена, дата экзамена. Выбор по фамилии, дате экзамена.
|
| Отдел кадров. Ф.И.О. работника, образование, специальность, подразделение, должность, оклад, дата поступления на предприятие. Выбор по должности, стражу работы.
|
В начало практикума
Популярное:
|