Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по СИ.doc
Скачиваний:
12
Добавлен:
23.08.2019
Размер:
433.15 Кб
Скачать

Лабораторная работа №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; записи должны быть размещены в алфавитном по­рядке по расчетным счетам плательщиков;

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

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