![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Разработка программ с составными типами данныхСодержание книги
Поиск на нашем сайте
(2часа) Цель: выработать практические навыки в написании программ с использованием комбинированных типов данных. Теоретические сведения Структуры С поддерживает определённый пользователем составной тип, объявляемый с ключевым словом struct, который определяет структуры. Эти структуры подобны записям, используемым в других языках программирования. Структура содержит данные-члены, которые являются данными базовых типов, либо являются предварительно объявленными структурами. Структуры не могут содержать структуры своего типа, но могут содержать указатели на такие структуры. Объявление структур В С ключевое слово struct используется не только для объявления объектов структурного типа, но и для объявления нового (структурного) типа. Объявленный тип структуры можно использовать для объявления объектов структурного типа. Представим общий синтаксис для объявления структуры типа (stt) и приведём несколько примеров структур
После объявления типа (<strucType>), его можно использовать для объявления объектов, например sttype Astr, Mstr[5], *pstr; Объявлены объекты структурного типа: Astr - структура; Mstr[5]- массив из 5 -ти структур; pstr- указатель на структуру данного типа. Структура типа Point имеет два члена-данных типа float. Структура типа Person - пример структуры, которая содержит данные-члены, которые являются массивами: firstname []- массив из 12 символов, в котором хранится имя. lastname []- массив из 15 символов, в котором хранится фамилия. birthday типа int, в котором хранится год рождения. weight типа float, в котором хранится вес. Объявление структуры-переменной (объекта структурного типа) не отличается от объявления переменных с базовыми или предварительно определёнными типами.
В этом примере объявлены переменные- структуры Origin, StartPoint типа Point, массив Points [10], имеющий 10 элементов - структур типа Point, переменные Me и You типа Person, массив Us [30], имеющий 30 элементов- структур типа Person и указатель на тип Person. С позволяет инициализировать данные-члены структур. Инициализация осуществляется подобно инициализации массивов и следует тем же правилам. Общий синтаксис для инициализации данных-членов структуры: sttype strucVar ={value1,value2,...}; Компилятор присваивает значение value1 первому данному-члену структуры strucVar, value2 - второму данному-члену структуры strucVar и т.д. С требует соблюдения следующих правил: 1 Присваиваемые значения должны быть совместимы с соответствующими им данными-членами по типу, диапазону и количеству (для массивов). 2 Можно объявлять меньшее количество присваиваемых значений, чем количество данных. Компилятор присваивает нули остальным данным- членам структуры. 3 Нельзя указывать больше инициализирующих значений, чем количество данных-членов. 4 Значения из списка инициализации последовательно присваиваются данным-членам вложенных структур и массивов. Пример инициализации структуры - Point fPoint={12.4,34.5}; В этом примере объявлена переменная fPoint типа Point и инициализированы данных члены х, у значениями 12.4 и 34.5. Доступ к данным-членам осуществляется с помощью операции (.)"точка".
myPoint -структурная переменная, доступ к её данным-членам х, у осуществляется с помощью выражения myPoint. x и myPoint. y соответственно.
Пример
/* ЗАНЯТИЕ N 14 Разработал Петров Ю.В. Объявить составные типы данных, выполнить их инициализацию. Массив структур инициализировать с использованием операторов организации цикла. Получить доступ к элементам структур. Вывести значения элементов массива структур на экран с применением функции. */
#include <stdio.h> #include <string.h> #include <conio.h> #include <alloc.h>
#define N 20 #define M 5 typedef struct Adr //Adr -тип структуры { char town[N]; char *country;
char region; float indeks; int kolvo; } adr; //adr -тоже тип структуры (синоним Adr) //input_st() -функция для инициализация структуры типа adr adr input_st(char *town, char *coun, char reg, float ind, int kol); void print_st(adr adr3); //Функция вывода элементов структуры
int main(void) { clrscr(); int a; float f1; char str[125]; //Буфер для ввода строки символов adr adress[M]; //Массив структур adr adr1,adr2={"Kiev","Ukr",'r',12.3,15}; //Явная инициализация adr1=adr2; //Инициализация adr1 присваиванием printf("Вывод элементов структуры "); print_st(adr1); //Вывод adr1 adr1=input_st("Kr","Ukr",'t',134.5,2); //Инициализация adr1 printf("Вывод элементов структуры "); print_st(adr1); //Вывод adr1 int i=0,j;
while (a&&i<M) //Ввод элементов массива структур { printf("Ввод города (char array[N]) "); scanf("%s",&adress[i].town); fflush(stdin); printf("Ввод страны (char *) "); scanf("%s",str); fflush(stdin); adress[i].country=(char*)malloc(strlen(str)+1); strcpy(adress[i].country,str); //adress[i].country=strdup(str); //Возможный вариант иниц. printf("Ввод кода региона (char) "); scanf("%c", &adress[i].region); fflush(stdin); printf("Ввод цифрового кода (float) "); scanf("%f",&f1); fflush(stdin); adress[i].indeks=f1; printf("Ввод количества (int) "); scanf("%i",&adress[i].kolvo); fflush(stdin); printf("\n\t\t\t Продолжить ввод? y/n: "); char c=getche(); printf("\n"); if (c=='n' || c=='N') a=0; i++; } //end while--------------------------------------------- printf("Вывод элементов структур\n "); j=i; for(i=0;i<j;i++) print_st(adress[i]); getche(); return 0; } //end main()-----------------------------------------------
adr input_st(char *t, char *c, char r, float f, int k) { adr ad; //Объявление локальной структуры strcpy(ad.town,t); //Копирование "t" в "ad.town" ad.country=(char*)malloc(strlen(c)+1); //Выделение памяти strcpy(ad.country, c); //Копирование "c" в "ad.country" // ad.country=strdup(c); //Возможный вариант инициализации ad.region=r; ad.indeks=f; ad.kolvo=k; return ad; //Возврат структуры из функции } //end input_st ()--------------------------------------- void print_st(adr adr3) //Функция вывода элементов структуры { printf("| %s ", adr3.town); printf("| %s ", adr3.country); printf("| %4c | %10f|%6i|\n",adr3.region, adr3.indeks, adr3.kolvo); } //end print_st()-----------------------------------------
/*Вывод элементов структуры | Kiev | Ukr | r | 12.300000| 15| Вывод элементов структуры | Kr | Ukr | t | 134.500000| 2| Ввод города (char array[N]) Don Ввод страны (char *) Ukr Ввод кода региона (char) t Ввод цифрового кода (float) 45.67 Ввод количества (int) 8 Продолжить ввод? y/n: y Ввод города (char array[N]) Khar Ввод страны (char *) Ukr Ввод кода региона (char) g Ввод цифрового кода (float) 67.84 Ввод количества (int) 4 Продолжить ввод? y/n: n Вывод элементов структур | Don | Ukr | t | 45.669998| 8| | Khar | Ukr | g | 67.839996| 4| */
Ход работы 1 Изучить теоретические сведения. 2 В соответствии с индивидуальным заданием разработать алгоритм решения задачи. Объявить составные (комбинированные) типы, массивы структур, использовать указатели в качестве членов структуры, объявить объединение и выполнить работу с объединением. Результаты инициализации, изменения членов комбинированных типов в процессе вычисления вывести на экран. 3 Разработать программу, набрать программу на компьютере, устранить ошибки. 4 Получить результат. 5 Оформить отчет. 6 Подготовиться к защите лабораторной работы, изучив контрольные вопросы по данной теме.
Требования к содержанию отчёта приведены в лабораторной работе №1.
Индивидуальное задание к лабораторной работе №14 взять из работы №3.
Контрольные вопросы для подготовки и самостоятельной работы 1 Какие типы данных могут быть членами структур? 2 Каков синтаксис объявления структур? 3 Как объявляются переменные (объекты) структурного типа? 4 Какие виды объектов структурного типа можно объявить?
5 Как производится инициализация данных-членов структуры? Каковы особенности инициализации массивов и структур-членов структуры (вложенных структур)? 6 Можно ли производить неполную инициализацию структуры (не для всех членов структуры)? 7 Какие правила инициализации данных-членов структур Вы знаете? 8 Как располагаются данные-члены структур в памяти? 9 Что такое объединение (union)? 10 Как располагаются в памяти данные-члены объединения? 11 Каков синтаксис объявления типа и объектов типа объединения? 12 В чём отличие объединения от структуры? 13 Как осуществляется доступ к данным-членам структуры, объединения? 14 Как осуществляется доступ к данным-членам структуры, расположенной в массиве структур? Лабораторная работа № 15
|
||||||||||||||||||
Последнее изменение этой страницы: 2016-04-26; просмотров: 402; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.108.166 (0.01 с.) |