#include <stdio.h>
#include <string.h>
#include <locale.h>
#define SIZE 10
/* Определение структуры сотрудника */
struct Employee {
char name[50]; /* Ф.И.О. */
double salary; /* Оклад */
int department; /* Номер отдела */
char phone[20]; /* Номер телефона */
};
int main() {
int i, j;
int current_dept;
int already_processed;
int max_idx;
int processed_depts[SIZE];
int num_processed = 0;
/* Инициализация массива из 10 сотрудников */
struct Employee staff[SIZE] = {
{"Иванов И.И.", 45000.0, 1, "+7(901)123-45-67"},
{"Петров П.П.", 72000.0, 1, "+7(902)234-56-78"},
{"Сидоров С.С.", 48000.0, 1, "+7(903)345-67-89"},
{"Смирнова А.А.", 60000.0, 2, "+7(904)456-78-90"},
{"Кузнецов В.В.", 58000.0, 2, "+7(905)567-89-01"},
{"Попова Е.Е.", 85000.0, 2, "+7(906)678-90-12"},
{"Соколов М.М.", 40000.0, 3, "+7(907)789-01-23"},
{"Лебедев А.Н.", 92000.0, 3, "+7(908)890-12-34"},
{"Козлов Д.Д.", 39000.0, 3, "+7(909)901-23-45"},
{"Новикова О.О.", 70000.0, 1, "+7(910)012-34-56"}
};
setlocale(LC_ALL, "");
/* Вывод исходных данных */
printf("--- ИСХОДНЫЕ ДАННЫЕ О СОТРУДНИКАХ ---\n");
printf("%-20s | %-6s | %-15s | %-10s\n",
"Ф.И.О.", "Отдел", "Телефон", "Оклад (руб)");
printf("-------------------------------------------------------------------\n");
for (i = 0; i < SIZE; i++) {
printf("%-20s | %-6d | %-15s | %-10.2f\n",
staff[i].name,
staff[i].department,
staff[i].phone,
staff[i].salary);
}
printf("\n--- СОТРУДНИКИ С МАКСИМАЛЬНЫМ ОКЛАДОМ ПО ОТДЕЛАМ ---\n\n");
/* Проходим по всем сотрудникам */
for (i = 0; i < SIZE; i++) {
current_dept = staff[i].department;
already_processed = 0;
/* Проверяем, искали ли мы уже максимум для этого отдела */
for (j = 0; j < num_processed; j++) {
if (processed_depts[j] == current_dept) {
already_processed = 1;
break;
}
}
/* Если этот отдел еще не проверяли */
if (!already_processed) {
max_idx = i;
/* Ищем по всему массиву других сотрудников этого же отдела */
for (j = i + 1; j < SIZE; j++) {
if (staff[j].department == current_dept &&
staff[j].salary > staff[max_idx].salary) {
max_idx = j;
}
}
/* Выводим победителя в данном отделе */
printf("Отдел %d: %-15s (Оклад: %.2f руб, Тел: %s)\n",
current_dept,
staff[max_idx].name,
staff[max_idx].salary,
staff[max_idx].phone);
/* Запоминаем, что этот отдел мы обработали */
processed_depts[num_processed] = current_dept;
num_processed++;
}
}
return 0;
}