Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
16.11.2025
Размер:
5.21 Кб
Скачать
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
char Faculties[10][20];
char Cities[20][20];
int tCities[20], mCities[20];
struct Data{
        char Name[20];
        char Surname[20];
        char City[20];
        char Strt[20];
        int Dom;
        int Kv;
        char Faculty[20];
        int Mark;
    }List[40];
int empty, N, NCity, n; // empty - kol-vo svobodnih mest, N - kol-vo fakultetov, n - kol-vo abiturientov
// int n=0;
int Housing=0;
int MinGrade(int Fac){
    int i, j, k, nFAC=0, MIN=1000, MAX=0, jMAX, stop;
    int Abit[empty];
    int tF[n];
    for(i=0; i<n; i++){
        tF[i]=1;
        if(strcmp(List[i].Faculty, Faculties[Fac])){
                nFAC++;
                tF[i]=0;
        }
    }
    nFAC=n-nFAC;
    if(nFAC<=empty){
            for(i=0; i<n; i++){
                if(strcmp(List[i].Faculty, Faculties[Fac])==0){
                    if(List[i].Mark<MIN){
                            MIN=List[i].Mark;
                    }
                }
            }
        return(MIN);
    }
    else{
        for(i=0; i<empty; i++){
            MAX=0;
            for(j=0; j<n; j++){
                if(tF[j]){
                    if(List[j].Mark>MAX){
                        MAX=List[j].Mark;
                        jMAX=j;
                    }
                }
            }
            tF[jMAX]=0;
        }
        return(MAX);
    }
}
void AbitList(int Fac){
    int i, j, S;
    int tF[n];
    printf("%s\n", Faculties[Fac]);
    for(i=0; i<n; i++){
        tF[i]=1;
        if(strcmp(List[i].Faculty, Faculties[Fac])){
                tF[i]=0;
        }
    }
    for(i=0; i<n; i++){
        if(tF[i]){
            if(List[i].Mark>=MinGrade(Fac)){
                printf(" %s\n", List[i].Surname);
                if(strcmp(List[i].City, "Moscow")) Housing++;
                for(j=0; j<NCity; j++){
                    if(strcmp(List[i].City, Cities[j])==0){
                        tCities[j]++;
                    }
                }
            }
        }
    }
}
int main(void){

    int i, j, k, checkFac, temp;
    scanf("%d", &n);
    /*
    FILE *f;
    f=fopen("list.txt", "r");
    while(!feof(f)){
        fscanf(f, "%s", List[n].Surname);
        fscanf(f, "%s", List[n].Name);
        fscanf(f, "%s", List[n].City);
        checkFac=0;
        for(j=0; j<NCity; j++){
            if(strcmp(List[n].City, Cities[j])==0){
                checkFac=1;
            }
        }
        if(checkFac!=1){
            strcpy(Cities[NCity], List[n].City);
            NCity++;
        }
        fscanf(f, "%s", List[n].Strt);
        fscanf(f, "%d", &List[n].Dom);
        fscanf(f, "%d", &List[n].Kv);
        fscanf(f, "%s", List[n].Faculty);
        checkFac=0;
        for(j=0; j<N; j++){
            if(strcmp(List[n].Faculty, Faculties[j])==0){
                checkFac=1;
            }
        }
        if(checkFac!=1){
            strcpy(Faculties[N], List[n].Faculty);
            N++;
        }
        fscanf(f, "%d", &List[n].Mark);
        n++;
    }
    */
    for(i=0; i<n; i++){
        scanf("%s", List[i].Surname);
        scanf("%s", List[i].Name);
        scanf("%s", List[i].City);
        checkFac=0;
        for(j=0; j<NCity; j++){
            if(strcmp(List[i].City, Cities[j])==0){
                checkFac=1;
            }
        }
        if(checkFac!=1){
            strcpy(Cities[NCity], List[i].City);
            NCity++;
        }
        scanf("%s", List[i].Strt);
        scanf("%d %d", &List[i].Dom, &List[i].Kv);
        scanf("%s", List[i].Faculty);
        checkFac=0;
        for(j=0; j<N; j++){
            if(strcmp(List[i].Faculty, Faculties[j])==0){
                checkFac=1;
            }
        }
        if(checkFac!=1){
            strcpy(Faculties[N], List[i].Faculty);
            N++;
        }
        scanf("%d", &List[i].Mark);
    }
    for(i=0; i<NCity; i++){
        tCities[i]=0;
    }
    scanf("%d", &empty);
    for(i=0; i<n; i++){
        printf("%s ", List[i].Surname);
        printf("%s ", List[i].Name);
        printf("%s ", List[i].City);
        printf("%s ", List[i].Strt);
        printf("%d %d ", List[i].Dom, List[i].Kv);
        printf("%s ", List[i].Faculty);
        printf("%d\n", List[i].Mark);
    }
    for(i=0; i<N; i++){
        printf("%s %d\n", Faculties[i], MinGrade(i));
    }
    printf("\n");
    for(i=0; i<N; i++){
        AbitList(i);
    }
    printf("\n");
    printf("%d\n", Housing);
    for(i=0; i<NCity; i++){
        mCities[i]=i;
    }
    for(i=1; i<NCity; i++){
        j=0;
        while(j<i){
            if(tCities[i]>tCities[j]){
                temp=tCities[j];
                tCities[j]=tCities[i];
                tCities[i]=temp;
                temp=mCities[j];
                mCities[j]=mCities[i];
                mCities[i]=temp;
            }
            j++;
        }
    }
    printf("\n");
    for(i=0; i<NCity; i++){
        if(tCities[i]) printf("%s ", Cities[mCities[i]]);
    }
    printf("\n");
}
Соседние файлы в папке 2 семестр