Изменить 'du5/program.c'

This commit is contained in:
Pavlo Tverdyi 2020-04-09 12:48:18 +00:00
parent f4375412dc
commit f736bb989b

View File

@ -13,19 +13,18 @@ int num;
int keep(struct LIS *); int keep(struct LIS *);
int del(struct LIS *,int); int del(struct LIS *,int);
void Sort_Struct(struct LIS *,int); void Sort_Num(struct LIS *,int);
void Sort_Sname(struct LIS *,int);
void print(struct LIS *,int); void print(struct LIS *,int);
int main(){ int main(){
struct LIS list[100]; struct LIS list[100];
int count=keep(list); int count=keep(list);
//printf("%d",count);
//printf("%d",pult);
Sort_Struct(list,count);
int pult=del(list,count); int pult=del(list,count);
print(list,count); Sort_Num(list,count);
Sort_Sname(list,count);
print(list,pult);
return 0; return 0;
} }
@ -51,9 +50,8 @@ int del(struct LIS *list,int count){
return count; return count;
} }
void Sort_Struct(struct LIS *list,int count){//bubble sort :) void Sort_Num(struct LIS *list,int count){//bubble sort :)
struct LIS ilusion; struct LIS ilusion;
int val;
for(int i=0;i<count;i++){ for(int i=0;i<count;i++){
for(int j=count;j>i;j--){ for(int j=count;j>i;j--){
if(list[i].num<list[j].num && list[j].num!=-1 && list[i].num!=-1){ if(list[i].num<list[j].num && list[j].num!=-1 && list[i].num!=-1){
@ -61,30 +59,29 @@ void Sort_Struct(struct LIS *list,int count){//bubble sort :)
list[i]=list[j]; list[i]=list[j];
list[j]=ilusion; list[j]=ilusion;
} }
if(list[i].num==list[j].num){
for(int k=0;k<strlen(list[i].sname);k++){
if(list[i].sname<list[j].sname && list[j].num!=-1 && list[i].num!=-1){
ilusion=list[i];
list[i]=list[j];
list[j]=ilusion;
}
}
}
/* if(list[i].num==list[j].num && strcmp(list[i].sname,list[j].sname)==0 ){
for(int l=0;l<strlen(list[i].fname);l++){
if(list[i].fname<list[i+1].fname){
ilusion=list[i];
list[i]=list[i+1];
list[i+1]=ilusion;
}
}
}*/
} }
} }
} }
void print(struct LIS *list,int count){ void Sort_Sname(struct LIS *list,int count){
printf("Vysledky:\n"); struct LIS ilusion;
for(int i=0;i<count;i++){ for(int i=0;i<count;i++){
for(int j=count;j>i;j--){
if(list[i].num==list[j].num && strcmp(list[i].sname,list[j].sname)==0){
for(int k=0;k<strlen(list[i].sname);k++){
if(list[i].sname[k]<list[j].sname[k]){
ilusion=list[i];
list[i]=list[j];
list[j]=ilusion;
break;
}
}
}
}
}
}
void print(struct LIS *list,int pult){
printf("Vysledky:\n");
for(int i=0;i<pult;i++){
if(list[i].num!=-1 && list[i].num!=0){ if(list[i].num!=-1 && list[i].num!=0){
printf("%d %s %s\n",list[i].num, list[i].sname, list[i].fname); printf("%d %s %s\n",list[i].num, list[i].sname, list[i].fname);
} }
@ -95,3 +92,4 @@ void print(struct LIS *list,int count){