Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <cstring>
- using namespace std;
- FILE *f=fopen("serbare1.in","r");
- FILE *g=fopen("serbare1.out","w");
- struct elev
- {
- char nume[51],prenume[51];
- int inaltime;
- };
- int n,x[101];
- elev v[101];
- int main()
- {
- fscanf(f,"%d",&n); // n=numarul de elevi
- for(int i=0;i<n;i++) // Citesc pe rand nume, prenume si inaltime pentru fiecare elev
- fscanf(f,"%s%s%d",v[i].nume,v[i].prenume,&v[i].inaltime);
- elev t;
- for(int i=0;i<n-1;i++) // Sortez descrescator dupa inaltime
- for(int j=i+1;j<n;j++)
- if(v[j].inaltime>v[i].inaltime)
- {
- t=v[i];
- v[i]=v[j];
- v[j]=t;
- }
- char si[101],sj[101];
- for(int i=0;i<n-1;i++) // Pentru aceeasi inaltime sortez dupa nume si prenume
- for(int j=i+1;j<n;j++)
- if(v[j].inaltime==v[i].inaltime)
- {
- strcpy(si,v[i].nume); // concatenez nume si prenume pentru elevii i si j
- strcat(si,v[i].prenume);
- strcpy(sj,v[j].nume);
- strcat(sj,v[j].prenume);
- if(strcmp(sj,si)<0)
- {
- t=v[i];
- v[i]=v[j];
- v[j]=t; }
- }
- int k=0,nr=0,h=v[0].inaltime;
- for(int i=0;i<n;i++)
- {
- if(v[i].inaltime==h)
- k++;
- else
- {
- nr++;
- x[nr]=k;
- k=1;
- h=v[i].inaltime;
- }
- }
- nr++;
- x[nr]=k;
- fprintf(g,"%d\n",nr);
- int i,start=0;
- k=1;
- while(x[k]>0)
- {
- fprintf(g,"%d",x[k]);
- for(i=start;i<start+x[k];i++)
- fprintf(g," %s %s",v[i].nume,v[i].prenume);
- fprintf(g,"\n");
- start+=x[k];
- k++;
- }
- fclose(f);
- fclose(g);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement