Программирование на языках высокого уровня. Язык программирования Си 

 

назад | оглавление | вперёд

 

8. Структуры

8.1. Определение структуры

Структура – это фиксированное число элементов одного или нескольких типов. Т.е. в отличие от массивов, в которых содержатся элементы одного типа, в структурах могут содержаться элементы как одного, так и разных типов. Элементами структуры могут быть базовые типы, массивы, указатели, структуры и т.д. Элементы структуры вместе с их описанием называются полями. Над полями можно выполнять действия, допустимые для данных этого типа.

Все структуры должны быть описаны до использования. Все идентификаторы полей в структуре должны быть различными.

Например, структуру Воок можно описать следующим образом:

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();

}

 

8.2. Контрольные вопросы

8.2.1. Какие типы данных относятся к простым, какие к составным?

8.2.2. Как объявляются структуры и чем отличается структура от массива?

8.2.3 Как обращаться к полям структуры?

8.2.4. Какие операции допустимы над структурой в целом?

 


назад | оглавление | вперёд