Сортировка сотрудников в порядке убывания стажа - 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 в порядке убывания года рождения сотрудников. Список действий:

  1. Объявление структуры sport с полями: фамилия, имя, отчество, номер отдела, должность и дата рождения (день, месяц, год).
  2. Создание пустого массива s для временного хранения данных.
  3. Ввод данных о сотрудниках в структуры sport с помощью функции CreatingStruct.
  4. Вывод несортированных структур на экран с помощью функции PrintStruct.
  5. Сортировка структур в порядке убывания года рождения с помощью двух вложенных циклов for.
  6. Замена в первой структуре данных на данные последней структуры.
  7. Ввод номера отдела для сортировки структур по этому параметру.
  8. Вывод отсортированных структур на экран с помощью функции PrintStruct.
  9. Ввод любой клавиши для завершения работы программы. Список переменных:
  10. n - количество сотрудников.
  11. i, j - индексы для обхода массива структур sport.
  12. temp - временная переменная для обмена данными.
  13. s - временная строка для обмена данными.
  14. p - номер отдела для сортировки структур по этому параметру.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы