Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование на языке Си. Практикум

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
893 Кб
Скачать

x.num - элемент num структурной переменной x n = x.num+2;

gets(x.name);

Если же объявлен указатель на структуру, то для доступа к элементу структуры используется операция ->

p -> num; // эквивалентно (*p).num;

Операция * должна относиться только к имени указателя, а не к уточненному имени элемента структуры, поэтому ставятся скобки.

x.num

p -> num обращение к одному и тому же элементу структуры х

(*p).num

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

Объявляем структурный тип

struct abc{ int num;

// номер

char name[20];

// наименование

float cost;

// стоимость

};

 

Тогда объявление

 

struct abc x[4]; // или abc x[4];

 

задает массив структур "х" из четырех элементов. При этом x - указатель на первый элемент массива структур, а x[1] - первый элемент массива структур.

Индекс массива пишется в квадратных скобках к имени структуры:

x[1].num

аналогично (x+1) -> num

x[1].name[4]

(x+1) -> name[4]

Пример:

struct abc x[2]={{ 2, "стул", 85.800},

{ 5, "стол", 165.900}}; //x–массив из 2 структур

61

struct abc *p;

// p – указатель на структуру

p=x;

 

// или p=&x[0];

p++; //значение, на которое меняется адрес p - 28 байт

//

(столько занимает один элемент массива

структур)

 

Переменной типа структура нельзя присвоить значение:

struct xxx, x; x=25; //ошибка

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

struct cor { cor *pc; long f; }; // правильно

Лабораторная работа № 14 Работа с массивами структур

Задание: Написать программу, состоящую из 3 функций: главная осуществляет организацию массива структур и его заполнения, вызывает функцию по обработке элементов структуры и функцию вывода на экран результата. Структуры передавать в параметрах.

Вариант задания

 

 

1

- Структуры содержат: порядковый номер, название, год

 

выпуска и объем книги.

 

- Функция получает массив структур, находит книгу с

 

наибольшим объемом и возвращает порядковый номер.

 

- На экран вывести структуру с этим порядковым номером.

2

- Структуры содержат: порядковый номер, имя, год

 

рождения и рост человека.

 

- Функция получает массив структур, находит самого

 

высокого человека и возвращает порядковый номер.

 

- Функция печати выводит информацию по самому

 

высокому человеку.

3

- Структуры содержат: порядковый номер, имя, вес и рост

 

человека.

 

- Функция получает массив структур, находит суммарный

 

вес группы людей.

62

- Функция печати выводит информацию по всей группе людей и суммарный вес.

4- Структуры содержат: порядковый номер, название, год выпуска и объем книги.

-Функция получает массив структур, находит самую старую книгу и возвращает порядковый номер.

-На экран вывести структуру с этим порядковым номером.

5- Структуры содержат: порядковый номер, имя, год рождения и рост человека.

-Функция получает массив структур, находит самого молодого человека и возвращает порядковый номер.

-Функция печати выводит информацию по самому молодому человеку.

6- Структуры содержат: порядковый номер, имя, год рождения и рост человека.

-Функция получает массив структур и год, и определяет, сколько человек родились в этом году.

-Функция печати выводит информацию по всей группе людей и число людей, родившихся в указанном году.

7- Структуры содержат: порядковый номер, название, год выпуска и объем книги.

-Функция получает массив структур, находит книгу, выпущенную позже других, и возвращает порядковый номер.

-На экран вывести информацию по этой книге.

8- Структуры содержат: порядковый номер, наименование, стоимость и количество предметов мебели.

-Функция получает массив структур, находит суммарную стоимость всех предметов.

-Функция печати выводит информацию по предметам мебели и суммарную стоимость гарнитура.

9- Структуры содержат: порядковый номер, группу, количество студентов в группе.

-Функция получает массив структур, находит общее количество студентов.

-Функция печати выводит информацию по всем группам и общее количество студентов.

63

10- Структуры содержат: порядковый номер, название, год выпуска, объем и стоимость книги.

-Функция получает массив структур, находит суммарную стоимость книг.

-На экран вывести массив структур и суммарную стоимость.

11- Структуры содержат: порядковый номер, группу, количество студентов в группе.

-Функция получает массив структур, находит группу с наибольшим количеством студентов.

-Функция печати выводит информацию по этой группе.

12- Структуры содержат: порядковый номер, имя, вес и рост человека.

-Функция получает массив структур и рост, и определяет, сколько человек такого роста.

-Функция печати выводит информацию по всей группе людей и количество людей заданного роста.

13- Структуры содержат: порядковый номер, наименование, цену и количество предметов.

-Функция получает массив структур, находит самый дорогой предмет из перечисленных.

-Функция печати выводит информацию по данному предмету.

14- Структуры содержат: целое число, вещественное число и символ.

-Создать массив из двух структур,

первую проинициализировать значениями 2; 4.2; 'A', вторую - значениями 1; -8.4; 'K'.

-Функция получает массив структур, числовые элементы второй структуры прибавляет к соответствующим элементам первой структуры, символьные элементы меняет местами.

-Напечатать значения элементов первой структуры.

15- Структуры содержат информацию по лабораторной работе: вариант, исходные данные а и с, результат y.

64

-Создать массив из трех структур, исходные данные (вариант, а и с) вводить с клавиатуры.

-Функция получает массив структур и вычисляет y по заданной формуле, затем перемещает данные в массиве структур в порядке убывания результата.

-Распечатать массив структур.

16- Структуры STUDENT содержат: фамилию и инициалы студента, номер группы и успеваемость (массив из 5 элементов).

-Создать массив из 10 структур STUDENT, исходные данные вводить с клавиатуры.

-Функция получает массив структур и упорядочивает данные по возрастанию номера группы.

-Вывести на экран фамилии и номера групп для всех студентов, чей средний балл больше 4.0; если таких студентов нет, вывести соответствующее сообщение.

17- Структуры STUDENT содержат: фамилию и инициалы студента, номер группы и успеваемость (массив из 5 элементов).

-Создать массив из 10 структур STUDENT, исходные данные вводить с клавиатуры.

-Функция получает массив структур и упорядочивает данные по возрастанию среднего балла.

-Вывести на экран фамилии и номера групп для всех студентов, имеющих оценки 4 и 5; если таких студентов нет, вывести соответствующее сообщение.

18- Структуры STUDENT содержат: фамилию и инициалы студента, номер группы и успеваемость (массив из 5 элементов).

-Создать массив из 10 структур STUDENT, исходные данные вводить с клавиатуры.

-Функция получает массив структур и упорядочивает данные по алфавиту.

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

65

19 - Структуры AEROFLOT содержат: название пункта назначения, номер рейса, тип самолета.

-Создать массив из 7 структур AEROFLOT, исходные данные вводить с клавиатуры.

-Функция получает массив структур и упорядочивает данные по возрастанию номера рейса.

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

20- Структуры AEROFLOT содержат следующие поля: NAZN

-название пункта назначения, NUMR - номер рейса, TIP - тип самолета.

-Создать массив AIPORT из 7 структур AEROFLOT, исходные данные вводить с клавиатуры.

-Функция получает массив структур и упорядочивает данные по алфавиту (по названиям пунктов назначения).

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

21- Структуры WORKER, содержат следующие поля: NAME

— фамилия и инициалы работника, POS — название занимаемой должности, YEAR — год поступления на работу.

-Создать массив TABL из 10 структур WORKER, исходные данные вводить с клавиатуры.

-Функция получает массив структур и упорядочивает данные по алфавиту (по фамилиям).

-Вывести на экран фамилии работников, чей стаж превышает значение, введенное с клавиатуры; если таких работников нет, вывести соответствующее сообщение.

22- Структуры TRAIN содержат следующие поля: NAZN - название пункта назначения, NUMR - номер поезда, TIME - время отправления.

-Создать массив RASP из 8 структур TRAIN, исходные данные вводить с клавиатуры.

66

-Функция получает массив структур и упорядочивает данные по алфавиту (по названиям пунктов назначения).

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

23- Структуры TRAIN содержат следующие поля: NAZN - название пункта назначения, NUMR - номер поезда, TIME - время отправления.

-Создать массив RASP из 6 структур TRAIN, исходные данные вводить с клавиатуры.

-Функция получает массив структур и упорядочивает данные по времени отправления.

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

24- Структуры TRAIN содержат следующие поля: NAZN - название пункта назначения, NUMR - номер поезда, TIME - время отправления.

-Создать массив RASP из 8 структур TRAIN, исходные данные вводить с клавиатуры.

-Функция получает массив структур и упорядочивает данные по номерам поездов.

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

25- Структуры ROUTE содержат следующие поля: BEGST - название начального пункта маршрута, TERM - название конечного пункта маршрута, NUMER - номер маршрута.

-Создать массив TRAFIC из 8 структур ROUTE, исходные данные вводить с клавиатуры.

-Функция получает массив структур и упорядочивает данные по номерам маршрутов.

-Вывести на экран информацию о маршруте, номер которого введен с клавиатуры; если таких маршрутов нет, вывести соответствующее сообщение.

67

26- Структуры ROUTE содержат следующие поля: BEGST - название начального пункта маршрута, TERM - название конечного пункта маршрута, NUMER - номер маршрута.

-Создать массив TRAFIC из 8 структур ROUTE, исходные данные вводить с клавиатуры.

-Функция получает массив структур и упорядочивает данные по алфавиту (по названиям начальных пунктов).

-Вывести на экран информацию о маршрутах, которые начинаются или кончаются в пункте, название которого введено с клавиатуры; если таких маршрутов нет, вывести соответствующее сообщение.

27- Структуры NOTE содержат следующие поля: NAME - фамилия, имя; TEL - номер телефона; BDAY — день рождения (массив из трех чисел).

-Создать массив BLOCKNOTE из 8 структур NOTE, исходные данные вводить с клавиатуры.

-Функция получает массив структур и упорядочивает данные по датам дней рождения.

-Вывести на экран информацию о человеке, номер телефона которого введен с клавиатуры; если такого нет, вывести соответствующее сообщение.

28- Структуры NOTE содержат следующие поля: NAME - фамилия, имя; TEL - номер телефона; BDAY — день рождения (массив из трех чисел).

-Создать массив BLOCKNOTE из 8 структур NOTE, исходные данные вводить с клавиатуры.

-Функция получает массив структур и упорядочивает данные по алфавиту.

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

29- Структуры ORDER содержат следующие поля: PLAT - расчетный счет плательщика; POL - расчетный счет получателя; SUMMA - перечисляемая сумма в рублях.

-Создать массив SPISOK из 8 структур ORDER, исходные данные вводить с клавиатуры.

68

-Функция получает массив структур и упорядочивает данные в алфавитном порядке по расчетным счетам плательщиков.

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

30- Структуры PRICE содержат следующие поля: TOVAR - название товара; MAG - название магазина, в котором продается товар; STOIM - стоимость товара в рублях.

-Создать массив SPISOK из 8 структур PRICE, исходные данные вводить с клавиатуры.

-Функция получает массив структур и упорядочивает данные в алфавитном порядке по названиям магазинов;

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

Список литературы

1.Керниган Б., Ритчи Д. Язык программирования С. – ИД

"Вильямс", 2017. – 288 с.

2.Прата С. Язык программирования C. Лекции и упражнения. 6-е изд., "Диалектика", 2019. – 928 с.

3.Гуркова М.А. Резникова Э.Р. Основы программирования на языке С: Практикум. – М.: МГУПС (МИИТ), 2015. – 44 с.

69

Учебно-методическое издание

Гуркова Маргарита Александровна Резникова Эмма Романовна

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ СИ

Практикум

_________________________________________________________

Изд. № 33-20

_________________________________________________________

70

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