Структура – это фиксированное число элементов одного или нескольких типов. Т.е. в отличие от массивов, в которых содержатся элементы одного типа, в структурах могут содержаться элементы как одного, так и разных типов. Элементами структуры могут быть базовые типы, массивы, указатели, структуры и т.д. Элементы структуры вместе с их описанием называются полями. Над полями можно выполнять действия, допустимые для данных этого типа.
Все структуры должны быть описаны до использования. Все идентификаторы полей в структуре должны быть различными.
Например, структуру Воок можно описать следующим образом:
struct card {char аuthor [15]; char title[20]; int year ; float cena;} Book;
или
struct card { char аuthor [15]; char title[20]; int year ; float cena;};
stuct card Book;
Тип структуры (например, card) вводит только шаблон и с его именем не связан никакой конкретный объект. Объект (например, структура Book) должен быть также объявлен. Обращение к полю структуры выполняется с помощью составного имени, которое состоит из имени_структуры . имени_поля. Например ввод данных с клавиатуры :
scanf (“%s,%s,%f”, Book.author, Book.title, &Book.cena);
Можно создавать массив структур:
Struct card bibl[100];
Обращение к полю элемента массива:
bibl[i].title;
Пример: Дана информация о 10 товарах: название, цена, количество. Вычислить общую стоимость товара, название которого вводится с клавиатуры.
#include <stdio.h> #include <conio.h> #include <string.h> #define n 10 main() { int i,k; float sum; //k-количество искомых товаров, sum- их общая стоимость. struct tov {char name[10]; float c; int kol;} t; //Объявление структуры t struct tov mag[n]; //объявление массива структур mag[n] char nazv[10]; //Наименование искомого товара clrscr(); printf(“\n Введите информацию о товарах \n“); for (i=0; i<n; i++) { printf("\n наименование , цена, количество : "); scanf("%s%f%d",t.name,&t.c,&t.kol);//Заполнение информацией структуры t mag[i]=t; //Присвоение i-му элементу массива структуры t целиком } printf("\n введите искомый товар: "); scanf("%s", nazv); for (i=0,sum=0,k=0; i<n; i++) if (strcmp(mag[i].name, nazv)==0) {sum+=mag[i].c*mag[i].kol; k++; } printf("Товаров %s %d, их стоимость %5.2f ", nazv, k, sum); getch(); }
1. Какие типы данных относятся к простым, какие к составным?
2. Как объявляются структуры и чем отличается структура от массива?
3 Как обращаться к полям структуры?
4. Какие операции допустимы над структурой в целом?