Добавил:
okley
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:2 семестр / sr18
.c#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");
}
