Лабораторная работа № 8
Тема: Составной тип данных: структуры. В отличие от массивов, все элементы которых должны быть одного типа, структуры объединяют в одной переменной элементы разных, типов. Объявления структуры начинается с ключевого слова struct и имеет два формата записи. Формат 1: struct [имя типа-структуры ] {список-объявлений-элементов} [ [описатель]…]; Формат 2: struct наш типа-структуры описатель [описатель] где имя типа-структуры - это идентификатор, который именует тип структуры. Описатель - именует переменную структурного типа. Список-объявлений-элеменатов содержит одно или несколько объявлений переменных или полей битов. Квадратные скобки ([ ]) означает необязательный формат записи и могут быть опущены. Объявление структуры задает имя структурной переменной и последовательность переменных величин, называемых элементами структуры, которые могут иметь различные типы. Элементы структуры могут быть любого основного типа, массивом, указателем, смесью или структурой. Пример объявление структуры: struct Teacher{ char fio[40]; int tab _ nom ; float oklad ; } spisok[20],*tt; struct Teacher_sc(); В этом примере объявляется структура типа Teacher из 20 элементов, указатель на структуру типа Teacher и функция, возвращающая структуру типа Teacher. Элементы структуры запоминаются последовательно в том же порядке, в котором они объявляются: первому элементу соответствует самый младший адрес памяти, а последнему - самый старший. Память каждому элементу выделяется на границе, соответствующей его типу. Для определения действительного размера структурной переменной надо использовать операцию sizeof. // Пример решения задачи с использованием структyp (struct): #include<stdio.h> #tnclude<conio.h> Int main(void) . { char nom _ tab[20]; char fam [20]; int vvod=0; int loop, vozr; Struct kol _ struct {char fam[20]; int vozr; float zarp; } kol[20]; printf («\n\n Введите номер таблицы (ведомости) ?: »); fflush (stdin); printf (« Сколько записей собираетесь ввести ( можно до 20);»); scanf («%d», wod); fflush (stdin); for (loop=0;loop<vvod; ++loop) { printf (« Запись %d\n»,loop); printf (« Фамилия :»); scanf («%s».kol [loop].fain); flush (stdin); printf (« Ваш возраст :»); scanf («%d», kol [loop]. vozr); fflush (stdin); printf (« Ваша зарплата :»); scanf («%f»,kol [loop]. zarp ); flush (stdin); } primf («\n Теперь введите свою фамилию, возраст и зарплату \n»); scinf («%20s %d %lf», fam, &vozr, &zarp»); printf («\n\n Таблица( ведомость):%s\n», nom_tab); printf (« Таблицу составил:%sвозраст %d $ 15.21F\n», fam , vozr, zarp); printf («_______________________________________________\n»); for ( loop = 0;loop< vvod; ++loop) printf («%4d | % -20s|%5d|%15.21f\n», loop+1, kol [loop]. fam, kol loop].vozr, kol [loop].zarp); printf («_______________________________________________\n»); return 0; } После компиляции и выполнение этой программы на экране появится следующие запросы: Введите номер таблицы (ведомости)?: 1 Сколько записей собираетесь ввести(можно до 20): 4 Запись 0: Фамилия: Иванов И. Ваш возраст: 23 Ваша зарплата. 345.67 Запись 1: Фамилия: Сидоров В. Ваш возраст: 22 Ваша зарплата. 545.67 Запись 2: Фамилия: Токоев Р. Ваш возраст: 25 Ваша зарплата. 742.00 Запись 3: Фамилия: Нанаев Н. Ваша возраст: 842.00 Теперь введите свою фамилию, возраст и зарплату: Абдыкеримов 29 678.90 После этого получаем резултат в виде: Таблица 1: Таблицу составил: Абдыкеримов возраст: 29 $ 678.90
Варианты задач. 1. Дан файл с записями следующей структуры:
В зависимости от запроса необходимо выдать списки студентов заданного факультета и курса, упорядочив их либо по труппам, а внутри групп по алфавиту, либо просто по алфавиту. Кроме того, необходимо распечатать списки неуспевающих по каждому предмету.
2. Задан файл с записями следующей структуры:
Записать его как индексно - последовательный файл и затем по запросу выдавать либо списки успевающих, либо списки неуспевающих, либо полностью информацию по какому - либо студенту.
3. Задан файл с записями следующей структуры
Файл неупорядочен. Рассортировать его по факультету, курсу, группе, номеру зачетки и распечатать, подсчитав количество неуспевающих и отличников по каждому подразделению.
4. Вводится неупорядоченный файл с записями следующей структуры:
Упорядочить его одним из методов сортировки по убыванию номеров зачеток.
5. Задан файл с записями следующей структуры:
Создать индексно-последовательный файл и одновременно распечатать его. Вместо оценок выдавать признак успеваемости: неуд. –есть хотя бы одна двойка; уд. –все тройки; см. – смешанные оценки; ох. –отлично и хорошо; отл. – отличные оценки.
6. Имеется файл, содержащий информацию об абитуриентах следующей структуры:
Составить программу записи файла и вывода на печать списка абитуриентов: имеющих средний балл 5; имеющих средний балл 4,5; имеющих средний балл ниже 4,5.
7. В универмаге имеется 5 секций. В конце каждого рабочего дня (на протяжении недели) заведующий каждой секцией представляет отчет о сумме денег, на которую проданы товары. Эта информация подготавливается в следующем виде:
Написать программу вычисления общей стоимости реализованной каждой секцией продукции за неделю. Исходный файл записать, выдать, напечатать.
8. Задан входной файл, имеющий следующую структуру:
Составить программу, которая подсчитывает школьников, дошкольников и пенсионеров (старше 60 лет –мужчин, и старше 55 лет -женщин). Вывести файл на печать и результаты счета.
9. Задан файл со следующей структурой:
Вычислить итоговую успеваемость, на печать выдать в виде таблиц.
10. Файл имеет следующую структуру:
Он упорядочен по курсам. Составить программу подсчета числа отличников из городов, сел, районов, центров по курсам и общего числа отличников. Результаты вывести на печать.
11. Составить файл следующей структуры:
Выдать полученный файл на печать. Подсчитать количество отличников в заданной группе. Результат отпечатать.
12. Дан файл следующей структуры:
Выдать на печать турнирную таблицу, рассортированную убыванию количества очков, при равенстве очков – по убыванию количества побед, а при равенстве побед – в произвольном порядке.
13. Чемпионат мира по волейболу проходит в 3 городах. Из каждого города в пресс – центр поступает информация, имеющая следующий вид:
Требуется записать итоговую таблицу чемпионата, где команды должны быть расставлены в порядке уменьшения количества очков. Таблицу распечатать.
14. Составить программу расположения в алфавитном порядке списка фамилий, вводимого с клавиатуры. Всего вводится 30 фамилий каждая фамилия содержит не более 200 символов. Исходный список и упорядоченный вывести на печать.
15. Составить программу, которая упорядочивает список группы в алфавитном порядке. Максимальное число вводимых фамилий 30, максимальное число букв в фамилии 20.
Популярное: Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (249)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |