- •Лабораторная работа № 1
- •5.1 Линейная программа
- •Далее создадим файл:
- •Задания1
- •Лабораторная работа № 2
- •7. Варианты задания
- •Лабораторная работа № 3
- •5.2 Оператор if
- •Лабораторная работа № 4
- •Лабораторная работа № 5
- •Задание 2. Циклический вычислительный процесс конечные суммы и произведения
- •Лабораторная работа № 6
- •Лабораторная работа № 7
- •5.1 Одномерный массив
- •5.3 Индексация с помощью указателей
- •Лабораторная работа № 8
- •Лабораторная работа № 9
- •Лабораторная работа № 11
- •Задача 2. Параметры функции
- •Лабораторная работа № 12
- •Лабораторная работа № 13
- •5. Содержание отчета
- •Лабораторная работа № 14
- •5. Содержание отчета
- •Решение уравнения методом деления отрезка пополам (бисекций)
- •Лабораторная работа № 15
- •6.2.1 Метод средних прямоугольников
- •6.2.1 Метод трапеций
- •Лабораторная работа № 10
- •Лабораторная работа № 16
- •5. Содержание отчета
- •Директива #include
- •7. Методические указания
- •8. Варианты заданий.
- •Лабораторная работа № 17
- •Лабораторная работа № 18
- •Лабораторная работа № 19
- •5. Содержание отчета
- •6.1.1 Доступ к элементам структуры
- •6.1.2 Присваивание структур
- •Лабораторная работа № 20
- •Например, формула
- •Задание на программирование
Лабораторная работа № 10
Тема «Разработка программного модуля для обработки структур данных»
Практическая работа рассчитана на 4 академических часа.
Цель работы
Изучение структур в языке С++.
Получение навыков в обработке структур.
Программное обеспечение
Операционная система Windows
Система программирования Visual C++ версия 6.0 или Borland C++ версия 3.1 и более поздние версии.
Постановка задачи
Разработать программу для обработки базы данных
Содержание отчета
4.1. Тема и цель работы.
4.2. Постановка задачи.
4.3. Текст программ.
4.4. Результаты выполнения программ
Общие сведения
Структуры (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;
вывод на экран информации о книгах, написанных автором, фамилия которого вводится с клавиатуры;
если таковых книг нет, то вывести на экран дисплея соответствующее сообщение.