Задача 4.5

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. Проверка

Программа работает корректно.

Хостинг от uCoz