Добавить 'du5/program.c'
This commit is contained in:
parent
e7e7644c01
commit
9f3a2b94d6
94
du5/program.c
Normal file
94
du5/program.c
Normal file
@ -0,0 +1,94 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
|
||||
struct LIS{
|
||||
|
||||
char fname[100];
|
||||
char sname[100];
|
||||
int num;
|
||||
};
|
||||
|
||||
int keep(struct LIS *);
|
||||
int del(struct LIS *,int);
|
||||
void Sort_Struct(struct LIS *,int);
|
||||
void print(struct LIS *,int);
|
||||
|
||||
|
||||
int main(){
|
||||
struct LIS list[100];
|
||||
int count=keep(list);
|
||||
//printf("%d",count);
|
||||
int pult=del(list,count);
|
||||
//printf("%d",pult);
|
||||
Sort_Struct(list,count);
|
||||
print(list,count);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int keep(struct LIS *list){
|
||||
char *array;
|
||||
int stop,count;
|
||||
int num;
|
||||
for(int i=0; stop!=EOF; i++){
|
||||
array=(char*)malloc(100);
|
||||
stop =0;
|
||||
for(int j=0;stop!='\n';j++){
|
||||
stop=getchar();
|
||||
if(stop==EOF) break;
|
||||
array[j]=stop;
|
||||
}
|
||||
if(stop==EOF) break;
|
||||
sscanf(array,"%d %s %s",&list[i].num,list[i].sname,list[i].fname);
|
||||
count++;
|
||||
free(array);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
int del(struct LIS *list,int count){
|
||||
for(int i=0;i<count-1;i++){
|
||||
for(int j=i+1;j<count;j++){
|
||||
if(strcmp(list[i].fname,list[j].fname)==0 && strcmp(list[i].sname,list[j].sname)==0 && list[j].num!=-1) {
|
||||
count--;
|
||||
list[i].num+=list[j].num;
|
||||
list[j].num=-1;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
void Sort_Struct(struct LIS *list,int count){
|
||||
struct LIS ilusion;
|
||||
|
||||
for(int i=0;i<count;i++){
|
||||
for(int j=i;j>1;j--){
|
||||
if(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]=list[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void print(struct LIS *list,int count){
|
||||
printf("Vysledky:\n");
|
||||
for(int i=0;i<count;i++){
|
||||
if(list[i].num!=-1){
|
||||
printf("%d %s %s\n",list[i].num, list[i].sname, list[i].fname);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user