Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ_ПРОГР.doc
Скачиваний:
33
Добавлен:
29.02.2016
Размер:
1.66 Mб
Скачать

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

Тема «Разработка программного модуля для обработки структур данных»

Практическая работа рассчитана на 4 академических часа.

  1. Цель работы

    1. Изучение структур в языке С++.

    2. Получение навыков в обработке структур.

  1. Программное обеспечение

    1. Операционная система Windows

    2. Система программирования Visual C++ версия 6.0 или Borland C++ версия 3.1 и более поздние версии.

  1. Постановка задачи

  1. Разработать программу для обработки базы данных

  1. Содержание отчета

4.1. Тема и цель работы.

4.2. Постановка задачи.

4.3. Текст программ.

4.4. Результаты выполнения программ

  1. Общие сведения

    1. Структуры (struct)

Cтруктуры - это составной объект, в который входят элементы любых типов, за исключением функций. В отличие от массива, все элементы которого однотипны, структура может содержать элементы разных типов:

struct [ имя_типа ]

{ тип_1 элемент_1;

тип_2 элемент_2;

тип_п элемент_п;

} [ список_описателей ];

Элементы структуры называются полями структуры и могут иметь любой тип. Если отсутствует имя типа, должен быть указан список описателей переменных, указателей или массивов.

struct

{

int year;

char month[10];

int day;

} date, date2;

Если список отсутствует, описание структуры определяет новый тип, имя которого можно использовать в дальнейшем наряду со стандартными типами, например:

struct student{ // описание нового типа Worker

char fio[30];

long int num_zac;

double sr_bal;

}; // описание заканчивается точкой с запятой

// определение массива типа student и указателя на тип student.

student gr[30], *p:

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

Доступ к полям структуры выполняется с помощью операций выбора . (точка) при обращении к полю через имя структуры и -> при обращении через указатель, например:

student student 1, gr[30], *p;

student .fio = "Страусенке":

gr[8] .sr_bal=5;

p->num_zac = 012001;

Если элементом структуры является другая структура, то доступ к ее элементам выполняется через две операции выбора:

struct A {int a, double х;};

struct В {A a, double х,} х[2];

х[0] .а. а = 1;

х[1]. х = 0.1;

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

Пример: Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив GAI, состоящий из шести элементов типа AVTO;

  • вывод на экран информации об владельцах автомобиля, марка которого вводится которого вводится с клавиатуры;

  • если таковых авторов нет, то на экран дисплея вывести соответствующее сообщение.

Программа решения задачи будет иметь вид:

#include <iostream.h>

#include <string.h>

#include <windows.h>

char buf[256];

char *Rus(char *text)

{CharToOem(text,buf);

return buf;}

struct avto {

char fam[25];

char marka[20];

char nomer[10];};

void output_gai(avto *,int );

void main(void)

{ int i,n;

bool flag;

cout<<Rus("Введите количество записей: ");

cin>>n;

avto *gai = new avto[n], temp;

char m[20];

for(i=0;i<n;i++)

{ // Ввод данных

cout<<Rus("Введите фамилию владельца ")<<i+1;

cout<<Rus("-го автомобиля: ");

cin >> gai[i].fam;

cout<<Rus("Введите марку ")<<i+1;

cout<<Rus("-го автомобиля: ");

cin >> gai[i].marka;

cout<<Rus("Введите номер ")<<i+1;

cout<<Rus("-го автомобиля: ");

cin >> gai[i].nomer; }

cout << endl << Rus("Введите марку автомобиля: ");

cin >> m;

cout << endl << Rus("Искомые автомобили") << endl;

flag = true;

for(i=0;i<n;i++)

if(!strcmp(m,gai[i].marka))

{ cout.setf(ios::left);

cout.width(15);

cout<<gai[i].fam;// *(gai+i)->fam;

cout.setf(ios::right);

cout.width(5);

cout<<gai[i].nomer<<endl;

flag = false; }

if(flag)

{cout<<Rus("\nМарки ")<<m;

cout<<Rus("нет в списках");}

delete [] gai;

}

Задание 1.

1. Описать, используя структуру данных «структура», телефонную книгу. Составить программу, выдающую список абонентов, имеющих телефонный номер, начинающийся на 331.

2. Описать, используя структуру данных «структура», каталог книг в библиотеке. Составить программу, выдающую список книг В.Пикуля, хранящихся в библиотеке.

3. Описать, используя структуру данных «структура», таблицу дат и событий русской истории. Составить программу, выдающую список событий 19 века.

4. Описать, используя структуру данных «структура», таблицу дат и событий русской истории. Составить программу, выдающую список дат 18 века.

5. Описать, используя структуру данных «структура», школьный класс (Фамилия и инициалы, дата рождения, месяц рождения, год рождения). Составить программу, выдающую список учеников, рожденных в мае месяце.

6. Описать, используя структуру данных «структура», записную книжку (Фамилия и инициалы, год рождения, дата рождения, месяц рождения). Составить программу, выдающую список друзей, кому в этом году исполняется 25 лет.

7. Описать, используя структуру данных «структура», школьный класс (Фамилия и инициалы, дата рождения, месяц рождения, год рождения). Составить программу, выдающую день рождения класса (среднее арифметическое дат и месяцев).

8. Описать, используя структуру данных «структура», выборы (фамилия кандидата и количество набранных голосов). Всего избирателей 2000. Составить программу, определяющую кто из делегатов прошел или необходимо проводить повторные выборы (должно быть набрано 1/3 голосов от общего количества).

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

10. После поступления в ВУЗ о студентах собрана информация: фамилия, нуждается ли в общежитии, стаж, работал ли учителем, что окончил, какой язык изучал. Составить программу, определяющую: 1) сколько человек нуждаются в общежитии; 2) списки студентов, проработавших 2 и более лет учителем; 3) списки окончивших педучилище; 4) списки языковых групп.

Задание 2

1) Описать структуру с именем STUDENT, содержащую следующие поля:

  • NAME – фамилия и инициалы;

  • GROUP – номер группы;

  • SES – успеваемость (массив из пяти элементов).

Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив STUD1, состоящий из десяти структур типа STUDENT;

  • вывод на дисплей фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку 2;

  • если таковых студентов нет, вывести соответствующее сообщение.

2) Описать структуру с именем AEROFLOT, содержащую следующие поля:

  • NAZN – название пункта назначения рейса;

  • NUMR – номер рейса;

  • TIP – тип самолета.

Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив AIRPORT, состоящий из семи элементов типа AEROFLOT;

  • вывод на экран номеров рейсов и типов самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры;

  • если таких рейсов нет, выдать на дисплей соответствующее сообщение.

3) Описать структуру с именем WORKER, содержащую следующие поля:

  • NAME – фамилия и инициалы работника;

  • POS – название занимаемой должности;

  • YEAR – год поступления на работу.

Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив TABL, состоящий из десяти структур типа WORKER;

  • вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;

  • если таких работников нет, вывести на дисплей соответствующие сообщение.

4) Описать структуру с именем TRAIN, содержащую следующие поля:

  • NAZN – название пункта назначения;

  • NUMR – номер поезда;

  • TIME – время отправления.

Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив RASP, состоящий из восьми элементов типа TRAIN;

  • вывод на экран информации о поездах, отправляющихся после введенного с клавиатуры времени;

  • если таких поездов нет, выдать на дисплей соответствующее сообщение.

5) Описать структуру с именем MARSH, содержащую следующие поля:

  • BEGST – название начального пункта маршрута;

  • TERM – название конечного пункта маршрута;

  • NUMER – номер маршрута.

Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив TRAFIC, состоящий из восьми элементов типа MARSH;

  • вывод на экран информации о маршруте, номер которого введен с клавиатуры;

  • если таких маршрутов нет, выдать на дисплей соответствующее сообщение.

6) Описать структуру с именем NOTE, содержащую следующие поля:

  • NAME – фамилия, имя;

  • TEL – номер телефона;

  • BDAY – день рождения (массив из трех чисел).

Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив BLOCKNOTE, состоящий их восьми элементов типа NOTE;

  • вывод на экран информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры;

  • если таких нет, выдать на дисплей соответствующее сообщение.

7) Описать структуру с именем ZNAK, содержащую следующие поля:

  • NAME – фамилия, имя;

  • ZODIAC – знак Зодиака;

  • BDAY – день рождения (массив из трех чисел).

Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив BOOK, состоящий из восьми элементов типа ZNAK;

  • вывод на экран информации о человеке, чья фамилия введена с клавиатуры;

  • если такого нет, выдать на дисплей соответствующее сообщение.

8) Описать структуру с именем PRICE, содержащую следующие поля:

  • TOVAR – название товара;

  • MAG – название магазина, в котором продается товар;

  • STOIM – стоимость товара в рублях.

Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив SPISOK, состоящий из восьми элементов типа PRICE;

  • вывод на экран информации о товаре, название которого введено с клавиатуры;

  • если такого товара нет, выдать на дисплей соответствующее сообщение.

9) Описать структуру с именем ORDER, содержащую следующие поля:

  • PLAT – расчетный счет плательщика;

  • POL – расчетный счет получателя;

  • SUMMA – перечисляемая сумма в рублях.

Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив SPISOK, состоящий из восьми элементов типа ORDER;

  • вывод на экран информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры;

  • если такого расчетного счета нет, выдать на дисплей соответствующее сообщение.

10) Описать структуру с именем BOOK, содержащую поля:

  • FAM – фамилия и имя автора;

  • NAZV – год издания;

  • YEAR – год издания.

Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив LIBRARY, состоящий из десяти элементов типа BOOK;

  • вывод на экран информации о книгах, написанных автором, фамилия которого вводится с клавиатуры;

  • если таковых книг нет, то вывести на экран дисплея соответствующее сообщение.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]