Определить абитуриентов с максимальным рабочим стажем на каждом факультете - C (СИ)

Формулировка задачи:

Со структурами разобрался, ввод/вывод данных тоже. Но условие не могу составить. Думаю, для начала нужно определить факультеты из массива анкет, далее засунуть их в дин. массив, а оттуда уже смотреть, у кого макс. стаж. На словах нетрудно, но реализовать - проблемка) Спасибо.
//2.    Структура элемента массива анкета: фамилия, имя, отчество, дата рождения (число, месяц, год), 
//домашний адрес (город, улица, дом), оценки в аттестате зрелости (математика, физика, химия), стаж, факультет. 
//Определить абитуриентов с максимальным рабочим стажем на каждом факультете. Названия факультетов определять из массива анкет. 
 
 
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <locale.h>
 
struct fio_type {
    char fam[21], name[16], ot[21]; //Фамилия, имя, отчество.
};
struct date_type
{
    int num; //число;
    int month; //месяц;
    int year; //год.
};
struct addr_type
{
    char town[36], street[36]; // город, улица;
    int house;// номер дома.
};
struct marks_type
{
    int m1, m2, m3; // оценки по математике, физике и химии.
};
 
struct form_type {
    fio_type fio;
    date_type date;
    addr_type addr;
    marks_type marks;
    int exp; // стаж работы.
    char fac[41]; // факультет.
};
 
 
 
int main(){
    setlocale(LC_ALL, "Russian");
    const int N = 2;
    bool f;
    int count = 0, j = 0, i;
    form_type form[N];
    for (i = 0; i < N; i++){
        printf("Анкета #%d: \n", i + 1);
 
        printf("Введите фамилию, имя, отчество студента: \n");
        fflush(stdin);
        gets_s(form[i].fio.fam);
        gets_s(form[i].fio.name);
        gets_s(form[i].fio.ot);
 
        printf("Введите дату рождения через пробел(в формате 01 01 1996): \n");
        scanf_s("%d", &form[i].date.num);
        scanf_s("%d", &form[i].date.month);
        scanf_s("%d", &form[i].date.year);
 
        printf("Введите адресс(город, улица, номер дома): \n");
        fflush(stdin);
        gets_s(form[i].addr.town);
        gets_s(form[i].addr.street);
        scanf_s("%d", &form[i].addr.house);
 
        printf("Введите оценки в аттестате зрелости(математика, физика, химия): \n");
        fflush(stdin);
        scanf_s("%d", &form[i].marks.m1);
        scanf_s("%d", &form[i].marks.m2);
        scanf_s("%d", &form[i].marks.m3);
 
        printf("Введите Ваш стаж(полных лет): \n");
        scanf_s("%d", &form[i].exp);
 
        printf("Введите Ваш факультет: \n");
        gets_s(form[i].fac);
    }
 
 
    //УСЛОВИЕ
 
        
 
    return 0;
}
Добавлено через 4 часа 27 минут Гляньте, пожалуйста)

Код к задаче: «Определить абитуриентов с максимальным рабочим стажем на каждом факультете - C (СИ)»

textual
//2.    Структура элемента массива анкета: фамилия, имя, отчество, дата рождения (число, месяц, год), 
//домашний адрес (город, улица, дом), оценки в аттестате зрелости (математика, физика, химия), стаж, факультет. 
//Определить абитуриентов с максимальным рабочим стажем на каждом факультете. Названия факультетов определять из массива анкет. 
 
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <locale.h>
 
struct fio_type {
    char fam[21], name[16], ot[21]; //Фамилия, имя, отчество.
};
struct date_type
{
    int num; //число;
    int month; //месяц;
    int year; //год.
};
struct addr_type
{
    char town[36], street[36]; // город, улица;
    int house;// номер дома.
};
struct marks_type
{
    int m1, m2, m3; // оценки по математике, физике и химии.
};
 
struct form_type {
    fio_type fio;
    date_type date;
    addr_type addr;
    marks_type marks;
    int exp; // стаж работы.
    char fac[51]; // факультет.
};
 
int main(){
    setlocale(LC_ALL, "Russian");
    const int N = 6;
    int i, j, count = 0;
    form_type form[N];
    for (i = 0; i < N; i++){
        printf("\n Анкета #%d: \n", i + 1);
        printf("Примечание: данные анкеты заполнять латиницей \n\n");
        printf("Фамилия, имя, отчество абитуриента: \n");
        fflush(stdin);
 
        gets_s(form[i].fio.fam);
        gets_s(form[i].fio.name);
        gets_s(form[i].fio.ot);
 
        do{
            printf("Дата рождения через пробел(в формате 01 01 1996): \n");
            scanf_s("%d", &form[i].date.num);
            scanf_s("%d", &form[i].date.month);
            scanf_s("%d", &form[i].date.year);
        } while (form[i].date.num < 1 || form[i].date.num > 31 || form[i].date.month < 1 || form[i].date.month>12 || form[i].date.year<1970 || form[i].date.year > 2000);
 
        printf("Адресс(город, улица, номер дома): \n");
        fflush(stdin);
        gets_s(form[i].addr.town);
        gets_s(form[i].addr.street);
        scanf_s("%d", &form[i].addr.house);
 
        do{
            printf("Оценки в аттестате зрелости(математика, физика, химия): \n");
            fflush(stdin);
            scanf_s("%d", &form[i].marks.m1);
            scanf_s("%d", &form[i].marks.m2);
            scanf_s("%d", &form[i].marks.m3);
        } while (form[i].marks.m1 < 1 || form[i].marks.m1> 100 || form[i].marks.m2 < 1 || form[i].marks.m2 > 100 || form[i].marks.m3 < 1 || form[i].marks.m3>100);
        
        do{
            printf("Ваш стаж работы(полных лет): \n");
            scanf_s("%d", &form[i].exp);
        } while (form[i].exp < 0);
        fflush(stdin);
        
        printf("Введите Ваш факультет: \n");
        gets_s(form[i].fac);
    }
    
    for (i = 0; i < N - 1; i++){
        for (j = i + 1; j < N; j++){
            if (!strcmp(form[i].fac, form[j].fac))
            {
                if(form[i].exp > form[j].exp)
                strcpy_s(form[j].fac, "NULL");
                if (form[i].exp < form[j].exp)
                strcpy_s(form[i].fac, "NULL");
            }
        }
    }
    
    j = 0;
    for (i = 0; i < N; i++)
    if (strcmp(form[i].fac, "NULL"))
    {
        strcpy_s(form[j].fac, form[i].fac);
        strcpy_s(form[j].fio.fam, form[i].fio.fam);
        strcpy_s(form[j].fio.name, form[i].fio.name);
        strcpy_s(form[j].fio.ot, form[i].fio.ot);
        j++;
                count++
    }
    printf("\n\n");
    for (j = 0; j < count;j++)
    printf("Абитуриент с лучшим стажем на факультете %s - %s %s %s \n", form[j].fac, form[j].fio.fam, form[j].fio.name, form[j].fio.ot);
 
    return 0;
}

7   голосов, оценка 4.143 из 5


СОХРАНИТЬ ССЫЛКУ