Пример задачи с использованием структурированных данных
Рассмотрим пример программы, в которой вводится информация об абонентах сети: ФИО, телефон и возраст. В программе выбираются абоненты моложе 25 лет и их список выводится в алфавитном порядке.
#include "stdafx.h"
#include<conio.h>
#include<stdlib.h>
typedef struct abon //описание структуры
{ char f[10],i[10],o[10];
long tel;
int voz;
}ABON;
const int n=5;
int i,k,j;
int main()
{ ABON z[n],y[n]; //описание массивов структур
ABON х;
for (i=0; i<n; i++)//ввод в цикле исходной информации о пяти абонентах
{printf("Введите ФИО абонента:");
scanf("%s%s%s",z[i].f, z[i].i, z[i].o);
printf("введите его телефон и возраст:");
scanf("%ld%d",&z[i].tel,&z[i].voz);
}
printf("---------------------------------------------------\n");
printf("| Фамилия | Имя | Отчество| Телефон | Возраст |\n");
printf("---------------------------------------------------\n");
for (i=0;i<n;i++) //вывод в цикле информации о пяти абонентах
printf("|%9s|%8s|%9s|%7ld | %5d |\n", z[i].f,z[i].i,z[i].o, z[i].tel,z[i].voz);
}
printf("---------------------------------------------------\n");
for (i=0;i<n;i++)
{if(z[i].voz<25) // поиск абонента моложе 25 лет
y[k++]=z[i];
}
for(i=1;i<k;i++) //сортировка списка абонентов моложе 25 лет
for(j=k-1;j>=i;j--)
if(y[j].f[0]<y[j-1].f[0])
{x=y[j];
y[j]=y[j-1];
y[j-1]=x;}
printf("mologe 25\n");
printf("---------------------------------------------------\n");
printf("| Фамилия | Имя | Отчество| Телефон | Возраст |\n");
printf("---------------------------------------------------\n");
for (i=0;i<k;i++) // вывод отсортированного списка
{printf("|%9s|%8s|%9s|%7ld | %5d |\n", y[i].f,y[i].i, y[i].o, y[i].tel,y[i].voz);
}
printf("---------------------------------------------------\n");
return 0;
}
Полем структурной переменной может быть переменная любого типа, в том числе другая структурная переменная. Поле, представляющее собой структуру, называется вложенной структурой.
Файлы данных