C- функция принятия решения, чтобы поменять строки или числа внутри массива структур - PullRequest
0 голосов
/ 08 июня 2018
typedef struct Workers
{
char id[10];
char *fName;
char *lName;
int  yob;
int monthlyHours;
int salary;



}workers;

, поэтому у меня есть структура, которая заполнена рабочими данными.В главном меню пользователь вводит опцию: 1. Сортировать по идентификатору 2. Сортировать по имени 3. Сортировать по месячным часамлибо по строке, либо по целому числу.

Я написал функцию пузырьковой сортировки и функцию подкачки, но не имею ни малейшего понятия, как создать функцию принятия решения, которая может обрабатывать все типы сортировок

текущее состояние функции подкачки

int me_compare(workers *me1, workers *me2) {
int surnameResult;

surnameResult = strcmp(me1->fName, me2->fName);

return surnameResult;
}

текущее состояние функции сортировки

void sortStruct(workers newWorkers[N], int numOfSort)
{
workers tmp;
workers tmp2;
int i = 0;
int j = 0;

int result;
int swapped;
for ( i = 0;( i < N-1); i++)
{
    swapped = 0;
    for (j = 0; j < N-i - 1; j++)
    {
        tmp = newWorkers[j];
        tmp2 = newWorkers[j + 1];
        result = me_compare(&tmp, &tmp2);
        if (result == 1)
        {
            newWorkers[j] = tmp2;
            newWorkers[j + 1] = tmp;
            swapped = 1;
        }
    }
    if (swapped == 0)
        break;

}

}

какие-либо советы для меня, как справиться с этим?

1 Ответ

0 голосов
/ 08 июня 2018

Для значения типа int мы используем

for(i = 0; i < n-1; i++)
{
   for(j = 0 ; , j = n-i-1; j++)
   {
       if(value[i]>value[i+1])
           swap(value[i],value[i+1]);
   }
}

Аналогично для функции структуры мы можем использовать шаблон

    if(workers[i]->salary > workers[i+1]->salary)

в c ++, который используется для написания функции с универсальными типами, но в c мынет этой возможности

Я предлагаю вам написать две разные функции подкачки для типов int и char, а при сортировке написать дополнительный код, чтобы определить, является ли он типом char или int, и использовал функцию функции swap в соответствии с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...