Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Структуры (struct)



Cтруктуры - это составной объект, в который входят элементы любых типов, за исключением функций. В отличие от массива, все элементы которого однотипны, структура может содержать элементы разных типов:

struct [ имя_типа ]

{ тип_1 элемент_1;

тип_2 элемент_2;

тип_п элемент_п;

} [ список_описателей ];

Элементы структуры называются полями структуры и могут иметь любой тип. Если отсутствует имя типа, должен быть указан список описателей переменных, указателей или массивов.

struct

{

int year;

char month[10];

int day;

} date, date2;

Если список отсутствует, описание структуры определяет новый тип, имя которого можно использовать в дальнейшем наряду со стандартными типами, например:

struct student{ // описание нового типа Worker

char fio[30];

long int num_zac;

double sr_bal;

}; // описание заканчивается точкой с запятой

// определение массива типа student и указателя на тип student.

student gr[30], *p:

Для переменных одного и того же структурного типа определена операция присваивания, при этом происходит поэлементное копирование. Структуру можно передавать в функцию и возвращать в качестве значения функции. Размер структуры не обязательно равен сумме размеров ее элементов, поскольку они могут быть выровнены по границам слова.

Доступ к полям структуры выполняется с помощью операций выбора. (точка) при обращении к полю через имя структуры и -> при обращении через указатель, например:

student student 1, gr[30], *p;

student.fio = "Страусенке":

gr[8].sr_bal=5;

p->num_zac = 012001;

Если элементом структуры является другая структура, то доступ к ее элементам выполняется через две операции выбора:

struct A {int a, double х;};

struct В {A a, double х,} х[2];

х[0].а. а = 1;

х[1]. х = 0.1;

Как видно из примера, поля разных структур могут иметь одинаковые имена, поскольку у них разная область видимости.

Пример: Написать программу, выполняющую следующие действия:

§ ввод с клавиатуры данных в массив GAI, состоящий из шести элементов типа AVTO;

§ вывод на экран информации об владельцах автомобиля, марка которого вводится которого вводится с клавиатуры;

§ если таковых авторов нет, то на экран дисплея вывести соответствующее сообщение.

Программа решения задачи будет иметь вид:

#include <iostream.h>

#include <string.h>

#include <windows.h>

char buf[256];

char *Rus(char *text)

{CharToOem(text,buf);

return buf;}

struct avto {

char fam[25];

char marka[20];

char nomer[10];};

void output_gai(avto *,int);

void main(void)

{ int i,n;

bool flag;

cout<<Rus("Введите количество записей: ");

cin>>n;

avto *gai = new avto[n], temp;

char m[20];

for(i=0;i<n;i++)

{ // Ввод данных

cout<<Rus("Введите фамилию владельца ")<<i+1;

cout<<Rus("-го автомобиля: ");

cin >> gai[i].fam;

cout<<Rus("Введите марку ")<<i+1;

cout<<Rus("-го автомобиля: ");

cin >> gai[i].marka;

cout<<Rus("Введите номер ")<<i+1;

cout<<Rus("-го автомобиля: ");

cin >> gai[i].nomer; }

cout << endl << Rus("Введите марку автомобиля: ");

cin >> m;

cout << endl << Rus("Искомые автомобили") << endl;

flag = true;

for(i=0;i<n;i++)

if(!strcmp(m,gai[i].marka))

{ cout.setf(ios::left);

cout.width(15);

cout<<gai[i].fam;// *(gai+i)->fam;

cout.setf(ios::right);

cout.width(5);

cout<<gai[i].nomer<<endl;

flag = false; }

if(flag)

{cout<<Rus("\nМарки ")<<m;

cout<<Rus("нет в списках");}

delete [] gai;

}





Дата публикования: 2015-10-09; Прочитано: 315 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...