![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!