Сортировка сотрудников в порядке убывания стажа - C (СИ)
Формулировка задачи:
Здравствуйте! Помогите пожалуйста написать программу: информация о сотрудниках предприятия содержит ФИО, номер отдела, должность и дату начала работы. Вывести список сотрудников заданного отдела в порядке убывания стажа. (нужно делать через структуру, например strukt sotr). Программа нужна на C... Срочно((
Решение задачи: «Сортировка сотрудников в порядке убывания стажа»
textual
Листинг программы
#include <stdio.h> #include <cstdlib> #include <string.h> using namespace std; struct sport { char surname[20]; char name[15]; char patronym[20]; //îò÷åñòâî int num; char post[20]; struct D {int day; int month; int year; }D; }; void CreatingStruct(sport *s) { printf("Enter surname\n"); scanf("%s", s->surname); printf("Enter name\n"); scanf("%s", s->name); printf("Enter patronym\n"); scanf("%s", s->patronym); printf("Enter the number of department\n"); scanf("%d", &s->num); printf("Enter post\n"); scanf("%s", s->post); printf("Enter day\n"); scanf("%d", &s->D.day); printf("Enter month\n"); scanf("%d", &s->D.month); printf("Enter year\n"); scanf("%d", &s->D.year); }; void PrintStruct(sport *s) { printf("%s %s %s| %d | %s |%d.%d.%d", s->surname,s->name,s->patronym, s->num, s->post,(s->D).day,(s->D).month,(s->D).year); } int main (void) { const int n=3;//êîëè÷åñòâî Г§Г*ГЇГЁГ±ГҐГ© Гў Г*Г*ГёГҐГ© ñòðóêòóðå int i,j; int temp;//ïåðåìåГ*Г*Г*Гї äëÿ ñîðòèðîâêè char s[128];// äëÿ ñîðòèðîâêè sport a[n]; for(i=0;i<n;i++) CreatingStruct(&a[i]); printf("_____Your Struct_____\n"); for(i=0;i<n;i++) { PrintStruct (&a[i]); printf("\n"); } for(i=n-1;i>=0;i--) for(j=0;j<i;j++) { if((a[j].D.day>a[j+1].D.day)||(a[j].D.month>a[j+1].D.month)||(a[j].D.year>a[j+1].D.year)) { temp=a[j+1].D.day;//Г¤Г*ГІГ* a[j+1].D.day=a[j].D.day; a[j].D.day=temp; temp=a[j+1].D.month; a[j+1].D.month=a[j].D.month; a[j].D.month=temp; temp=a[j+1].D.year; a[j+1].D.year=a[j].D.year; a[j].D.year=temp;//îòñîðòèðîâГ*ëè Г¤Г*ГІГі strcpy(s,a[j+1].surname);//Ôèî strcpy(a[j+1].surname,a[j].surname); strcpy(a[j].surname,s); strcpy(s,a[j+1].name); strcpy(a[j+1].name,a[j].name); strcpy(a[j].name,s); strcpy(s,a[j+1].patronym); strcpy(a[j+1].patronym,a[j].patronym); strcpy(a[j].patronym,s);//Ôèî temp=a[j+1].num;// Г*îìåð îòäåëГ* a[j+1].num=a[j].num; a[j].num=temp;// strcpy(s,a[j+1].post); strcpy(a[j+1].post,a[j].post); strcpy(a[j].post,s); } } int p=0; //переменная для номера отдела printf("Enter number of department\n"); scanf("%d", &p); printf("\n----------- Sorted Struct ------------\n"); for(i=0;i<n;i++) {if(a[i].num==p) PrintStruct (&a[i]); printf("\n"); } system("pause"); return 0; }
Объяснение кода листинга программы
В данном коде реализована сортировка структур sport
в порядке убывания года рождения сотрудников.
Список действий:
- Объявление структуры
sport
с полями: фамилия, имя, отчество, номер отдела, должность и дата рождения (день, месяц, год). - Создание пустого массива
s
для временного хранения данных. - Ввод данных о сотрудниках в структуры
sport
с помощью функцииCreatingStruct
. - Вывод несортированных структур на экран с помощью функции
PrintStruct
. - Сортировка структур в порядке убывания года рождения с помощью двух вложенных циклов
for
. - Замена в первой структуре данных на данные последней структуры.
- Ввод номера отдела для сортировки структур по этому параметру.
- Вывод отсортированных структур на экран с помощью функции
PrintStruct
. - Ввод любой клавиши для завершения работы программы. Список переменных:
- n - количество сотрудников.
- i, j - индексы для обхода массива структур
sport
. - temp - временная переменная для обмена данными.
- s - временная строка для обмена данными.
- p - номер отдела для сортировки структур по этому параметру.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д