Доступ к элементам структур
Доступ к элементам структур обеспечивается с помощью уточненных имен:
Имя_структуры.имя_элемента
employee.name – указатель на строку «Петров»;
employee.rate – переменная целого типа со значением 10000
Пример:
#include <iostream.h>
void main()
{
struct Student
{
char name[30];
char group[10];
float rating;
};
Student mas[35];
//ввод значений массива
for(int i=0;i<35;i++)
{
cout<<”\nEnter name:”;cin>>mas[i].name;
cout<<”\nEnter group:”;cin>>mas[i].group;
cout<<”\nEnter rating:”;cin>>mas[i].rating;
}
cout<<”Raitng <3:”;
for( i=0;i<35;i++)
if(mas[i].name<3)
cout<<”\n”<<mas[i].name;
}
Указатели на структуры
Указатели на структуры определяются также как и указатели на другие типы.
Student*ps;
Можно ввести указатель для типа struct, не имеющего имени (способ 2):
Struct
{
char *name;
int age;
} *person;//указатель на структуру
При определении указатель на структуру может быть сразу же проинициализирован.
Student *ps=&mas[0];
Указатель на структуру обеспечивает доступ к ее элементам 2 способами:
1.(*указатель).имя_элемента
2. указатель->имя_элемента
cin>>(*ps).name;
cin>>ps->title;
Постановка задачи.
Реализовать программу в соответствии с вариантом задания, используя заданную структуру данных. Сформировать соответствующие функции для обработки этих данных.
Варианты
Вариант 1.
1. Описать структуру с именем STUDENT, содержащую следующие поля:
NAME — фамилия и инициалы;
GROUP — номер группы;
SES — успеваемость (массив из пяти элементов).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив STUD1, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию содержимого поля GROUP;
вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4,0;
если таких студентов нет, вывести соответствующее сообщение.
Вариант 2.
1. Описать структуру с именем STUDENT, содержащую следующие поля:
NAME — фамилия и инициалы;
GROUP — номер группы;
SES — успеваемость (массив из пяти элементов).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив STUD1, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию среднего балла;
вывод на дисплей фамилий и номеров групп для всех студентов, имеющих оценки 4 и 5;
если таких студентов нет, вывести соответствующее сообщение.
Вариант 3.
1. Описать структуру с именем STUDENT, содержащую следующие поля:
NAME — фамилия и инициалы;
GROUP — номер группы;
SES — успеваемость (массив из пяти элементов).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив STUD1, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по алфавиту;
вывод на дисплеи фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку 2;
если таких студентов нет, вывести соответствующее сообщение.
Вариант 4.
1. Описать структуру с именем AEROFLOT, содержащую следующие поля:
NAZN — название пункта назначения рейса;
NUMR — номер рейса;
TIP — тип самолета.
2. Написать программу, выполняющую следующие действия:
•ввод с клавиатуры данных в массив AIRPORT, состоящий из семи элементов типа AEROFLOT; записи должны быть упорядочены по возрастаниюномера рейса;
вывод на экран номеров рейсов и типов самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры;
если таких рейсов нет, выдать на дисплей соответствующее сообщение.
Вариант 5.
1. Описать структуру с именем AEROFLOT, содержащую следующие поля:
NAZN — название пункта назначения рейса;
NUMR — номер рейса;
TIP — тип самолета.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив AIPORT, состоящий из семи элементов типа AEROFLOT; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;
вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры;
если таких рейсов нет, выдать на дисплей соответствующее сообщение.
Вариант 6.
1. Описать структуру с именем WORKER, содержащую следующие поля:
NAME — фамилия и инициалы работника;
POS — название занимаемой должности;
YEAR — год поступления на работу.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив TABL, состоящей из десяти структур типа WORKER; записи должны быть размещены по алфавиту.
вывод на дисплей фамилий работников, чей стаж работы в организациипревышает значение, введенное с клавиатуры;
если таких работников нет, вывести на дисплей соответствующее сообщение.
Вариант 7.
1. Описать структуру с именем TRAIN, содержащую следующие поля:
NAZN — название пункта назначения;
NUMR — номер поезда;
TIME — время отправления.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив RASP, состоящий из восьми элементов типа TRAIN; записи должны быть размещены в алфавитном порядкепо названиям пунктов назначения;
вывод на экран информации о поездах, отправляющихся после введеного склавиатуры времени;
если таких поездов нет, выдать на дисплеи соответствующее сообщение.
Вариант 8.
1. Описать структуру с именем TRAIN, содержащую следующие поля:
NAZN — название пункта назначения:ш NUMR — номер поезда;
TIME — время отправления.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив RASP, состоящий из шести элементов типа TRAIN; записи должны быть упорядочены по времени отправленияпоезда;
вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры;
если таких поездов нет, выдать на дисплей соответствующее сообщение.
Вариант 9.
1. Описать структуру с именем TRAIN, содержащую следующие поля:
NAZN — название пункта назначения:
NUMR — номер поезда;
TIME — время отправления.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив RASP, состоящий из восьми элементов типа TRAIN; записи должны быть упорядочены по номерам поездов;
вывод на экран информации о поезде, номер которого введен с клавиатуры;
если таких поездов нет, выдать на дисплей соответствующее сообщение.
Вариант 10.
1. Описать структуру с именем MARSH, содержащую следующие поля:
BEGST — название начального пункта маршрута;
TERM — название конечного пункта маршрута;
NUMER — номер маршрута.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив TRAFIC, состоящий из восьми элементов типа MARSH; записи должны быть упорядочены по номерам маршрутов;
вывод на экран информации о маршруте, номер которого введен с клавиатуры;
если таких маршрутов нет, выдать на дисплей соответствующее сообщение.
Вариант 11.
1. Описать структуру с именем MARSH, содержащую следующие поля:
BEGST — название начального пункта маршрута;
TERM — название конечного пункта маршрута;
NUMER — номер маршрута.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив TRAFIC, состоящий из восьми элементов типа MARSH; записи должны быть упорядочены по номерам маршрутов;
вывод на экран информации о маршрутах, которые начинаются или кончаются в пункте, название которого введено с клавиатуры;
если таких маршрутов нет, выдать на дисплей соответствующее сообщение.
Вариант 12.
1. Описать структуру с именем NOTE, содержащую следующие поля:
NAME — фамилия, имя;
TELE — номер телефона;
BDAY — день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив BLOCKNOTE, состоящий из восьми элементов типа NOTE; записи должны быть упорядочены по датам дней рождения;
вывод на экран информации о человеке, номер телефона которого введен с клавиатуры;
если такого нет, выдать на дисплей соответствующее сообщение.
Вариант 13.
1. Описать структуру с именем NOTE, содержащую следующие поля:
NAME — фамилия, имя;
TELE — номер телефона;
BDAY — день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие денстиня:
ввод с клавиатуры данных в массив BLOCKNOTE, состоящий из восьми элементов типа NOTE; записи должны быть размещены по алфавиту;
вывод на экран информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры;
• если таких нет, выдать на дисплей соответствующее сообщение.
Вариант 14.
1. Описать структуру с именем NOTE, содержащую следующие поля:
• NAME — фамилия, имя;
TELE — номер телефона;
BDAY — день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив BLOCKNOTE, состоящий из восьми элементов типа NOTE; записи должны быть упорядочены по трем первым цифрам номера телефона;
вывод на экран информации о человеке, чья фамилия введена с клавиатуры;
если такого нет, выдать на дисплей соответствующее сообщение.
Вариант 15.
1. Описать структуру с именем ZNAK, содержащую следующие поля:
NAME — фамилия, имя;
ZODIAC — знак Зодиака;
BDAY — день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив BOOK, состоящий из восьми элементов типа ZNAK; записи должны быть упорядочены по датам дней рождения;
вывод на экран информации о человеке, чья фамилия введена с клавиатуры;
если такого нет, выдать на дисплей соответствующее сообщение.
Вариант 16.
1. Описать структуру с именем ZNAK, содержащую следующие поля:
NAME — фамилия, имя:
ZODIAC — знак Зодиака;
BDAY — день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив BOOK, состоящий из восьми элементов типа ZNAK; записи должны быть упорядочены по датам дней рождения;
вывод на экран информации о людях, родившихся под знаком, наименова
ние которого введено с клавиатуры:
если таких нет, выдать на дисплей соответствующее сообщение.
Вариант 17.
1. Описать структуру с именем ZNAK, содержащую следующие поля:
NAME — фамилия, имя;
ZODIAC — знак Зодиака;
BDAY — день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив BOOK, состоящий из восьми элементов типа ZNAK; записи должны быть упорядочены по знакам Зодиака;
вывод на экран информации о людях, родившихся в месяц, значение которого введено с клавиатуры;
если таких нет, выдать на дисплей соответствующее сообщение.
Вариант 18.
1. Описать структуру с именем PRICE, содержащую следующие поля:
TOVAR — название товара;
MAG — название магазина, в котором продается товар;
STOIM — стоимость товара в руб.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив SPISOK, состоящий из восьми элементов типа PRICE; записи должны быть размещены в алфавитном порядке по названиям товаров;
вывод на экран информации о товаре, название которого введено с клавиатуры;
если таких товаров нет, выдать на дисплей соответствующее сообщение.
Вариант 19.
1. Описать структуру с именем PRICE, содержащую следующие поля:
TOVAR — название товара;
MAG — название магазина, в котором продается товар;
STOIM — стоимость товара в руб.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив SPISOK, состоящий из восьми элементов типа PRICE; записи должны быть размещены в алфавитном порядке по названиям магазинов;
вывод на экран информации о товарах, продающихся в магазине, название которого введено с клавиатуры;
Если такого магазина нет, выдать на дисплей соответствующее сообщение.
Вариант 20.
1. Описать структуру с именем ORDER, содержащую следующие поля:
PLAT — расчетный счет плательщика;
POL — расчетный счет получателя;
SUMMA — перечисляемая сумма в руб.
2. Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив SPISOK, состоящий из восьми элементов типа ORDER; записи должны быть размещены в алфавитном порядке по расчетным счетам плательщиков;
вывод на экран информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры;
если такого расчетного счета нет, выдать на дисплей соответствующее сообщение.
Содержание отчета
1. Постановка задачи для конкретного варианта.
2. Исходные данные.
3. Текст программы.
4. Результаты выполнения программы.
Контрольные вопросы.
1. Понятие структуры. Синтаксис;
2. Инициализация и присваивание структур. Примеры;
3. Доступ к элементам структур. Примеры4
4. Особенности использования указателей на структуры.