Лабораторная работа №4 Структуры
Пример задания: 1. Описать структуру с именем STUDENT, содержащую следующие поля:
Name – фамилия;
Group – номер группы;
Ses – успеваемость.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив Stud1, состоящей из 10 структур типа Student; записи должны быть упорядочены по возрастанию содержимого поля Group;
вывод на экран фамилий и номеров групп для всех студентов, включенных в массив, если балл успеваемости студента больше 4.
если таких студентов нет, вывести соответствующее сообщение.
Пример решения задачи:
#include <stdio.h>
struct Student
{
char Name[255]; /* Фамилия студента */
int Group; /* Номер группы */
float Ses; /* Балл успеваемости */
};
int main(int argc, char* argv[])
{
/* Объявление и инициализация переменных и констант */
const MAX_STUDENTS = 5; /* Определяет количество студентов */
Student Stud1[MAX_STUDENTS];
Student stTemp;
bool is = false;
/* Запрашиваем ввод данных с клавиатуры */
for (int i = 0; i < MAX_STUDENTS; i++)
{
printf("Введите запись #%d:\n\tИмя: ", i);
gets(Stud1[i].Name);
printf("\tГруппа: ");
scanf("%d", &Stud1[i].Group);
printf("\tБалл: ");
scanf("%f", &Stud1[i].Ses);
}
/* Сортировка массива структур Student по полю Group (по возрастанию) */
for (i = 0; i < MAX_STUDENTS; i++)
{
for (int j = i + 1; j < MAX_STUDENTS; j++)
{
if (Stud1[i].Group > Stud1[j].Group)
{
stTemp = Stud1[i];
Stud1[i] = Stud1[j];
Stud1[j] = stTemp;
}
}
}
/* Вывод на экран фамилий студентов и номеров групп, у которых средний балл больше 4 */
for (i = 0; i < MAX_STUDENTS; i++)
{
if (Stud1[i].Ses > 4)
{
printf("\n%s из группы #%d", Stud1[i].Name, Stud1[i].Group);
/* При наличие хотя бы одного такого студента выставляем флаг */
is = true;
}
}
/* Если не найдено ни одного студента, удовлетворяющего условиям отбора выводим соответствующее сообщение */
if (!is) printf("\nСтуденты с баллом успеваемости > 4 отсутствуют.");
return 0;
}
Результат выполнения программы:
Введите запись #0:
Имя: Golodoniuc Pavel
Группа: 12
Балл: 8.77
Введите запись #1:
Имя: Vasia Pupkin
Группа: 14
Балл: 2.7
Введите запись #2:
Имя: Philip Lykov
Группа: 11
Балл: 6.8
Введите запись #3:
Имя: Alexander Pushkin
Группа: 13
Балл: 3.4
Введите запись #4:
Имя: Stepan Fedorov
Группа: 11
Балл: 4.8
Golodoniuc Pavel из группы #12
Philip Lykov из группы #11
Stepan Fedorov из группы #11
Индивидуальные задания:
Вариант 1
1. Описать структуру с именем STUDENT, содержащую следующие поля:
NAME - фамилия и инициалы;
GROUP - номер группы;
SES - успеваемость (массив из пяти элементов).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив STUD1, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию содержимого поля GROUP;
вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4,0;
если таких студентов нет, вывести соответствующее сообщение.
Вариант 2
1. Описать структуру с именем STUDENT, содержащую следующие поля:
NАМЕ - фамилия и инициалы
GROUP - номер группы;
SES - успеваемость (массив из пяти элементов).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив STUD1, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию среднего балла;
вывод на дисплей фамилий и номеров групп для всех студентов, имеющих оценки 4 и 5;
если таких студентов нет, вывести соответствующее сообщение.
Вариант 3
1. Описать структуру с именем STUDENT, содержащую следующие поля:
NАМЕ - фамилия и инициалы;
GROUР - номер группы;
SЕS - успеваемость (массив из пяти элементов).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив STUD1, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по алфавиту;
вывод на дисплей фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку 2;
если таких студентов нет, вывести соответствующее сообщение.
Вариант 4
1. Описать структуру с именем АЕRОFLОТ, содержащую следующие поля:
NAZN - название пункта назначения рейса;
NUMR - номер рейса;
ТIР - тип самолета.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив AIRPORT, состоящий из семи элементов типа АЕRОFLОТ; записи должны быть упорядочены по возрастанию номера рейса;
вывод на экран номеров рейсов и типов самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры;
если таких рейсов нет, выдать на дисплей соответствующее сообщение.
Вариант 5
1. Описать структуру с именем АЕRОLOT, содержащую следующие поля:
NAZN - название пункта назначения рейса;
NUMR - номер рейса;
ТIР - тип самолета.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив АIРОRТ, состоящий из семи элементов типа АЕRОFLОТ; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;
вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры;
если таких рейсов нет, выдать на дисплей соответствующее сообщение.
Вариант 6
1. Описать структуру с именем WORKER, содержащую следующие поля:
NАМЕ - фамилия и инициалы работника;
РОS - название занимаемой должности;
YЕАR - год поступления на работу.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив ТАВL, состоящий из десяти структур типа WORKER; записи должны быть размещены по алфавиту.
вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;
если таких работников нет, вывести на дисплей соответствующее сообщение.
Вариант 7
1. Описать структуру с именем ТRAIN, содержащую следующие поля:
NAZN - название пункта назначения;
NUMR - номер поезда;
ТIМЕ - время отправления.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив RASР, состоящий из восьми элементов типа ТRAIN; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;
вывод на экран информации о поездах, отправляющихся после введенного с клавиатуры времени;
если таких поездов нет, выдать на дисплей соответствующее сообщение.
Вариант 8
1. Описать структуру с именем ТRAIN, содержащую следующие поля:
NAZN - название пункта назначения;
NUMR - номер поезда;
ТIМЕ - время отправления.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив , состоящий из шести элементов типа ТRAIN; записи должны быть упорядочены по времени отправления поезда;
вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры;
если таких поездов нет, выдать на дисплей соответствующее сообщение.
Вариант 9
1. Описать структуру с именем TRAIN, содержащую следующие поля:
BEGST - название пункта назначения;
TERM - номер поезда;
ТIМЕ - время отправления.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив RASР, состоящий из восьми элементов типа TRAIN; записи должны быть упорядочены по номерам поездов;
вывод на экран информации о поезде, номер которого введен с клавиатуры;
если таких поездов нет, выдать на дисплей соответствующее сообщение.
Вариант 10
1. Описать структуру с именем TRAFIC, содержащую следующие поля:
ВЕGSТ - название начального пункта маршрута;
ТЕRМ - название конечного пункта маршрута;
NUMER - номер маршрута.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив ТRAFIC, состоящий из восьми элементов типа МАRSН; записи должны быть упорядочены по номерам маршрутов;
вывод на экран информации о маршруте, номер которого введен с клавиатуры;
если таких маршрутов нет, выдать на дисплей соответствующее сообщение.
Вариант 11
1. Описать структуру с именем MARSH, содержащую следующие поля:
ВЕС5Т - название начального пункта маршрута;
ТЕRМ - название конечного пункта маршрута;
NUMER - номер маршрута.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив ТRАFIС, состоящий из восьми элементов типа МАRSН; записи должны быть упорядочены по номерам маршрутов;
вывод на экран информации о маршрутах, которые начинаются или кончаются в пункте, название которого введено с клавиатуры;
если таких маршрутов нет, выдать на дисплей соответствующее сообщение.
Вариант 12
1. Описать структуру с именем NОТЕ, содержащую следующие поля:
NАМЕ - фамилия, имя;
ТЕLЕ - номер телефона;
ВDAY - день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив BLOCKNOТЕ, состоящий из восьми элементов типа NОТЕ; записи должны быть упорядочены по датам дней рождения;
вывод на экран информации о человеке, номер телефона которого введен с клавиатуры;
если такого нет, выдать на дисплей соответствующее сообщение.
Вариант 13
1. Описать структуру с именем NОТЕ, содержащую следующие поля:
NАМЕ - фамилия, имя;
ТЕLЕ - номер телефона;
ВDAY - день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив BLOCKNОТЕ, состоящий из восьми элементов типа NОТЕ; записи должны быть размещены по алфавиту;
вывод на экран информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры;
если таких нет, выдать на дисплей соответствующее сообщение.
Вариант 14
1. Описать структуру с именем NОТЕ, содержащую следующие поля:
NАMЕ - фамилия, имя;
ТЕLЕ - номер телефона;
ВDAY - день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив ВLОСКNОТЕ, состоящий из восьми элементов типа NОТЕ; записи должны быть упорядочены по трем первым цифрам номера телефона;
вывод на экран информации о человеке, чья фамилия введена с клавиатуры;
если такого нет, выдать на дисплей соответствующее сообщение.
Вариант 15
1. Описать структуру с именем ZNАК, содержащую следующие поля:
NАМЕ - фамилия, имя;
ZODIAC - знак Зодиака;
ВDAY - день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив ВООК, состоящий из восьми элементов типа ZNАК; записи должны быть упорядочены по датам дней рождения;
вывод на экран информации о человеке, чья фамилия введена с клавиатуры;
если такого нет, выдать на дисплей соответствующее сообщение.
Вариант 16
1. Описать структуру с именем ZNАК, содержащую следующие поля:
NАМЕ - фамилия, имя;
ZODIAС - знак Зодиака;
ВDAY - день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив ВООК, состоящий из восьми элементов типа ZNАК; записи должны быть упорядочены по датам дней рождения;
вывод на экран информации о людях, родившихся под знаком, наименование которого введено с клавиатуры;
если таких нет, выдать на дисплей соответствующее сообщение.
Вариант 17
1. Описать структуру с именем ZNАК, содержащую следующие поля:
NАМЕ - фамилия, имя;
ZODIАС - знак Зодиака;
ВDAY - день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив ВООК, состоящий из восьми элементов типа ZNАК; записи должны быть упорядочены по знакам Зодиака;
вывод на экран информации о людях, родившихся в месяц значение которого введено с клавиатуры;
если таких нет, выдать на дисплей соответствующее сообщение.
Вариант 18
1. Описать структуру с именем РRIСЕ, содержащую следующие поля:
ТOVАR - название товара;
МАG - название магазина, в котором продается товар;
STOIМ - стоимость товара в руб.
2. Написать программу выполняющую следующие действия:
ввод с клавиатуры данных в массив SPISOK, состоящий из восьми элементов типа PRICЕ; записи должны быть размещены в алфавитном порядке по названиям товаров;
вывод на экран информации о товаре, название которого введено с клавиатуры;
если таких товаров нет, выдать на дисплей соответствующее сообщение.
Вариант 19
1. Описать структуру с именем РRIСЕ, содержащую следующие поля:
ТОVАR - название товара;
МАG - название магазина, в котором продается товар;
STOIМ - стоимость товара в руб.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив SPISOK, состоящий из восьми элементов типа PRIСЕ; записи должны быть размещены в алфавитном порядке по названиям магазинов;
вывод на экран информации о товарах, продающихся в магазине, название которого введено с клавиатуры;
если такого магазина нет, выдать на дисплей соответствующее сообщение.
Вариант 20
1. Описать структуру с именем ORDER, содержащую следующие поля:
РLАТ - расчетный счет плательщика;
РОL - расчетный счет получателя;
SUMMA - перечисляемая сумма в руб.
2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив SPISОК, состоящий из восьми элементов типа ОRDER; записи должны быть размещены в алфавитном порядке по расчетным счетам плательщиков;
вывод на экран информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры;
если такого расчетного счета нет, выдать на дисплей соответствующее сообщение.