close

Вход

Забыли?

вход по аккаунту

?

Лаба 5

код для вставкиСкачать
 1
Лабораторная работа № 5
Структуры
Цель работы
: получить практические навыки решения задач с испол
ь
зованием структур.
Теоретические сведения
Структура –
это совокупность переменных, объединнных одним именем, предоставляющая общеприн
я-
тый способ хранения инф
ормации. Об
ъ
явление структуры приводит к образованию шаблона, используемого для создания объектов структуры. Переменные, образующие структуру, называются членами структуры. (Чл
е-
ны структуры также часто называются элементами или полями.)
Например, информаци
я об имени и адресе, находящаяся в списке рассылки, обычно представляется в виде структуры. Следующий фрагмент кода объявляет шаблон структуры, определяющей имя и адрес. Ключевое слово struct
сообщает компилятору об объявлении структуры.
struct addr {
ch
ar name[30];
char street[40];
char city[20];
char state[3];
unsigned long int zip;
};
Объявление завершается точкой с запятой, поскольку объявление структуры –
это оператор. Имя структ
у-
ры addr
идентифицирует структуру данных и является спецификатором типа. Имя структуры часто используют как ярлык.
На данный момент не создано никакой переменной. Определена только форма данных. Для объявления настоящей переменной, соответствующей данной структуре, следует написать:
addr addr_info;
В данной строке проис
ходит объявление переменной addr
_
info
типа addr
. При объявлении структуры можно одновременно объявить одну или несколько переменных. Например:
struct addr {
char name[30];
char street[40];
char city[20];
char state[3];
unsigned long int zip;
} addr_
info, binfo, cinfo;
объявляет структуру addr
и объявляет переменные addr
_
info
, binfo
, cinfo
данного типа.
Стандартный вид объявления структуры следующий:
struct ярлык
{
тип имя переменной;
тип имя переменной;
тип имя переменной;
.
.
.
}
структурные переменные;
ярлык –
это имя типа структуры. Структурные переменные –
это разделнный запятыми список имн п
е-
ременных. Следует помнить, что или ярлык, или структурные переменные могут отсутствовать, но не оба.
2
Доступ к членам структуры
Доступ к отдельным
членам структуры осуществляется с помощью оператора . (обычно называется «то
ч-
кой»). Например, следующий фрагмент кода присваивает члену zip
структурной переменной addr
_
info
значение 12345:
addr_info.zip = 12345;
Присваивание структур
Информация, содерж
ащаяся в одной структуре, может быть присвоена другой структуре того же типа с помощью одиночного оператора присваивания, то есть не нужно присваивать значение каждого члена по о
т-
дельности. Следующая программа демонстрирует присваивание структур:
#include
<stdio.h>
int main(void)
{
struct {
int a;
int b;
} x, y;
x.a=10;
x.b=20;
y
=
x
; /* присвоение одной структуры другой */
printf(“Contents of y: %d %d.”, y.a, y.b);
return 0;
}
После присваивания y
.
a
и y
.
b
будут содержать значения 10 и 2
0 соответственно.
Массивы структур
Возможно, наиболее часто структуры используются в виде массивов структур. Для объявления массива структур следует сначала определить структуру, а затем объявить массив переменных данного типа. Например, для объявления 1
00
-
элементного массива структур типа addr
, которая была определена ранее, следует написать:
struct addr addr_info[100];
В результате получаем набор из 100 переменных, устроенных, как объявлено в типе структуры addr
.
Для доступа к отдельным структурам мас
сива addr
_
info
следует проиндексировать имя массива. Напр
и-
мер,
printf(“%d “, addr_info[2].zip);
Передача всей структуры в функцию
Когда структура используется как аргумент функции, передается вся структура с помощью стандартной передачи по значению. Это
означает, что любые изменения, внеснные в содержимое структуры внутри фун
к-
ции, не повлияют на структуру, используемую в качестве аргумента.
Когда структура используется как параметр, самое важное –
это запомнить, что тип аргумента должен с
о-
ответствовать типу параметра. Лучший способ сделать это –
определить структуру глобально, а затем испол
ь-
зовать е ярлык для объявления необходимых структурных переменных и параметров. Например:
#include <stdio.h>
/* объявление типа структуры*/
struct struct_type {
in
t a, b;
3
char ch;
};
void f1(struct struct_type parm);
int main(void)
{
struct struct_type arg;
arg.a = 1000;
f1(arg);
return 0;
}
void f1(struct struct_type parm)
{
printf("%d
\
n", parm.a);
}
Данная программа выводит число 1000 на экран. Можно видеть, что как arg
, так и parm
объявлены как структуры типа struct
_
type
.
Контрольные вопросы
1.
Какова область применения структур?
2.
Каким образом определяется структура?
3.
Как определяются переменные типа структура?
4.
Как осуществляется доступ к структурным чл
енам?
Лабораторное задание
Составить программу решения задания для своего варианта. При нап
и
сании программы задать любой цвет экрана, организовать ввод входных данных в диалоговом режиме, вывод выходных данных -
на очищенный экран в виде таблицы данных.
4
П
орядок выполнения лабораторной работы
1.
Войти в интегрированную среду разработки программ.
2.
Ввести текст программы своего варианта задания.
3.
Отладить программу.
4.
Результат работы программы показать преподавателю.
5.
Защитить лабораторную работу.
Требования к отчет
у
Отчет должен содержать:
1)
конспект теоретической части;
2)
лабораторное задание;
3)
порядок выполнения лабораторной работы;
4)
результаты выполнения программ.
5
Варианты заданий
Номер варианта
Задание
1,14
Сформировать массив, содержащий сведения о количестве издел
ий, собранных сборщиками цеха за неделю. Стру
к
турный тип содержит поля: фамилия сборщика, количество изделий, собранных им ежедневно в течение шестидневной недели, т.е. раздельно в понедельник, вторник и т.д. Н
а
писать программу, выдающую на печать: -
фамили
ю сборщика и общее количество деталей, собра
н
ных им за неделю; -
фамилию сборщика собравшего наибольшее количество изделий, и день, когда он достиг на
и
высшей производ
и
тельности труда.
2, 15
Сформировать массив, содержащий сведения о количестве изделий кате
горий A, B, C, собранных рабочим за месяц. Структурный тип содержит поля: фамилия сборщика, наименование цеха, к
о-
личество изделий по категориям, со
б
ранных рабочим за месяц.
Считая заданными значения расценок SA, SB, SC за выпо
л
ненную работу по сборке едини
цы изделия категорий A, B, C, выдать на печать следующую информацию:
-
общее количество изделий категорий A, B, C, собранных рабочим цеха;
-
средний
размер заработной платы рабочих цеха X.
3, 16
Сформировать массив, содержащий сведения о телефонах абонентов.
Структурный тип содержит поля: фамилия абонентов, год установки телефона. Написать программу, в
ы
дающую следующую информацию:
-
по вводимой фамилии абонента вывести номер телефона;
-
определить количество установленных телефонов с XXXX года. Номер года вводит
ся с клавиатуры.
4, 17
Сформировать массив, содержащий сведения об ассорт
и
менте игрушек в магазине. Структурный тип содержит поля: название игрушки, цена, количество, возрастные гр
а
ницы (2 -
5).
Написать программу, выдающую следующие сведения:
-
название и
грушек, которые подходят детям от 1 до 3 лет;
-
стоимость самой дорогой игрушки и ее название;
-
название игрушки, которая по стоимости не превышает X руб. и подходит ребенку в возрасте от A до B лет.
Значения A, B, X вводятся с клавиатуры.
5, 18
Сформироват
ь массив, содержащий сведения о сдаче студентами сессии. Структурный тип с
о-
держит поля: индекс группы, фамилия студента, оценки по пяти экзаменам ("з" -
зачет, "н" -
нез
а-
чет).
Написать программу, выдающую информацию:
-
фамилии неуспевающих студентов с указан
ием индексов групп и количества задолженностей;
-
средний балл, полученный каждым студентом группы X, и всей группы в целом.
6, 19
Сформировать массив, содержащий сведения о личной коллекции книголюба. Структурный тип содержит поля: шифр книги, автор, назва
ние, год издания, местоположение (номер стеллажа).
Написать программу, выдающую следующую информацию:
-
местоположение книги, автора X названия Y;
-
список книг автора Z, находящихся в коллекции;
-
число книг издания XX года, имеющихся в библиотеке.
7, 20
Сформировать массив, содержащий сведения о наличии билетов на рейсы аэрофлота. Структу
р-
ный тип содержит поля: номер рейса, пункт назначения, время вылета, время прибытия, колич
е-
ство свободных мест в салоне. Написать программу, выдающую следующую информац
ию:
-
время вылета самолетов в город X;
-
наличие свободных мест на рейс в город X с временем отправления Y.
8, 21
Сформировать массив, содержащий сведения об ассортименте обуви в магазине фирмы. Стру
к-
турный тип содержит поля: артикул, наименование, колич
ество, стоимость одной пары. Артикул начинается с буквы Д -
для дамской обуви, М -
для мужской, П -
для детской. Написать программу, выдающую информацию:
-
о наличии и стоимости обуви артикула X;
-
ассортиментный список дамской обуви с указанием н
а
именов
ания и имеющегося в наличии числа пар каждой модели.
9, 22
Сформировать массив, содержащий сведения о напада
ю
щих команды "Спартак". Структурный тип содержит поля: имена нападающих, число заброшенных ими шайб, число сделанных гол
е-
вых передач, заработанно
е штрафное вр
е
мя.
Написать программу, которая определяет по сумме очков (голы + передачи) четырех лучших игроков.
6
Продолжение
Номер варианта
Задание
10, 23
Сформировать массив, содержащий сведения о том, какие из пяти предлагаемых дисциплин по выбору ж
елает изучать студент. Структурный тип содержит поля: фамилия студе
н
та, индекс группы, пять дисциплин, средний балл успеваемости. Выбираемая дисциплина отмечается си
м-
волом 1, иначе -
пробелом.
Написать программу, которая печатает список студентов, желающих
прослушать дисциплину X. Если число желающих превышает 4 человека, то отобрать студентов, име
ю
щих более высокий средний балл успеваемости.
11, 24
Сформировать массив, содержащий сведения об отправл
е
нии поездов дальнего следования с Казанского вокзала. Ст
руктурный тип содержит поля: номер поезда, станция назначения, время отправления, время в пути, наличие б
и
летов.
Написать программу, выдающую информацию:
-
время отравления поездов в город Х во временном инте
р
вале от А до В часов;
-
наличие билетов на поез
д с номером ХХХ.
12, 25
Сформировать массив, содержащий сведения о сотрудниках института. Структурный тип соде
р-
жит поля: фамилия работающего, название отдела, год рождения, стаж работы, должность, оклад.
Написать программу, которая позволяет получить инфо
р
мацию: -
список сотрудников пенсионного возраста на сегодня
ш
ний день с указанием стажа работы;
-
средний стаж работающих в отделе Х.
13, 26
Сформировать массив, содержащий сведения о пациентах глазной клиники. Структурный тип содержит поля: фамилия паци
ента, пол, возраст, место проживания (город), д
и
агноз.
Написать программу, которая выдает информацию: -
количество иногородних, прибывших в поликлинику;
-
список пациентов старше Х лет с диагнозом J.
Автор
maximrazor
Документ
Категория
Без категории
Просмотров
525
Размер файла
58 Кб
Теги
лаба
1/--страниц
Пожаловаться на содержимое документа