1. Условие
Сведения о служащих содержат фамилию, адрес, дату приема на работу, годовой заработок и номер отдела. Вывести данные о служащих, работающих в пятом отделе.
2. Решение
Оператор задает количество служащих. Программа выделяет динамически память под массив структур, содержащий информацию о служащих. В цикле оператор производит инициализацию массива. Далее в цикле весь массив просматривается, находятся служащие пятого отдела, и их персональные данные выводятся на экран.
3. Алгоритм решения

4. Текст программы
1 : #include <stdio.h>
2 : #include <alloc.h>
3 : #include <conio.h>
4 : #define BASE struct tabel
5 : BASE
6 : {
7 : char fam[20];
8 : char str[20];
9 : char dom[5];
10: int kv;
11: int day;
12: int mes;
13: int god;
14: int zrub;
15: int zkop;
16: int num;
17: }*a;
18: void main()
19: {
20: int n,i;
21: clrscr( );
22: printf( "\n \t Введите число служащих... n=");
23: scanf( "%d", &n );
24: a=(BASE*)malloc(n*sizeof(BASE));
25: for(i=0; i<n; i++)
26: {
27: printf( "\n \t \t Введите сведения о %d-M служащем...", i+1 );
28: printf( "\n Фамилия:" );
29: scanf("%s", (a+i)->fam);
30: printf( "\n Адрес:\n Улица:" );
31: scanf( "%s", (a+i)->str );
32: printf( "\n Дом:" );
33: scanf( "%s", (a+i)->dom );
34: printf( "\n Квартира:" );
35: scanf( "%d", &(a+i)->kv );
36: printf( "\n Дата приема на работу:\n Число:" );
37: scanf( "%d", &(a+i)->day );
38: printf( "\n Месяц:" );
39: scanf( "%d", &(a+i)->mes );
40: printf( "\n Год:" );
50: scanf( "%d", &(a+i)->god );
51: printf( "\n Годовой заработок: \n рублей:" );
52: scanf( "%d", &(a+i)->zrub );
53: printf( "\n коп:" );
54: scanf( "%d", &(a+i)->zkop );
55: printf( "\n Номер отдела:" );
56: scanf( "%d", &(a+i)->num );
56: }
57: clrscr( );
58: printf( "\n\t==========================================\n");
59: printf( "\n\t========== Служащие отдела N 5============\n");
60: printf( "\n\t==========================================\n");
61: for(i=0; i<n; i++)
62: if( (a+i)->num==5 )
63: {
64: printf("\n\t==========%30s=============",(a+i)->fam);
65: printf("\n\tАдрес: %20s %5s-%3d========",
66: (a-i)->str,(a+i)->dom,(a+i)->kv);
67: printf("\n\tДата приема на работу: %2d.%2d.%4d ",
68: (a+i)->day,(a+i)->mes,(a+i)->god);
69: printf("\n\tГодовой заработок:=====%5d.%2d py6=",
70: (a+i)->zrub,(a+i)->zkop);
71: printf(" \n\t==========================================\n");
72: }
73: printf("\n\t==========================================");
74: printf("\n Нажмите любую клавишу...");
75: free(a);
76: getch();
77: }
5. Работа программы
Введите число
служащих n 3
Введите сведения о 1-м служащем:
Фамилия: Петров
Адрес: Улица: Свободы
Дом: 101
Квартира: 50
Дата приема на работу:
Число: 25
Месяц: 01
Год 1995
Годовой заработок: рублей: 50000 коп: 90
Номер отдела: 5
Введите сведения о 2-м служащем:
Фамилия: Петров-Водкин
Адрес: Улица: Елькина
Дом: 56
Квартира: 80
Дата приема на работу:
Число: 10
Месяц: 03
Год 1981
Годовой заработок: рублей: 30000 коп: 50
Номер отдела: 5
Введите сведения о 3-м служащем:
Фамилия: Сидоров
Адрес: Улица: Лесная
Дом: 10
Квартира: 5
Дата приема на работу:
Число: 5
Месяц: 01
Год 1995
Годовой заработок: рублей: 40000 коп: 70
Номер отдела: 3
==========================================
========== Служащие отдела N 5============
==========================================
Фамилия: Петров
Адрес: Свободы 101 50
Дата приема на работу: 25.01.1995
Заработок: 50000.90 руб
==========================================
Фамилия: Петров-Водкин
Адрес: Елькина 56 80
Дата приема на работу: 10.03.1981
Заработок: 30000.50 руб
==========================================
Нажмите любую клавишу...
6. Проверка
Программа работает корректно.