Advertisement
a53

serbare1

a53
Nov 21st, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <cstring>
  3. using namespace std;
  4. FILE *f=fopen("serbare1.in","r");
  5. FILE *g=fopen("serbare1.out","w");
  6. struct elev
  7. {
  8. char nume[51],prenume[51];
  9. int inaltime;
  10. };
  11. int n,x[101];
  12. elev v[101];
  13.  
  14. int main()
  15. {
  16. fscanf(f,"%d",&n); // n=numarul de elevi
  17. for(int i=0;i<n;i++) // Citesc pe rand nume, prenume si inaltime pentru fiecare elev
  18. fscanf(f,"%s%s%d",v[i].nume,v[i].prenume,&v[i].inaltime);
  19. elev t;
  20. for(int i=0;i<n-1;i++) // Sortez descrescator dupa inaltime
  21. for(int j=i+1;j<n;j++)
  22. if(v[j].inaltime>v[i].inaltime)
  23. {
  24. t=v[i];
  25. v[i]=v[j];
  26. v[j]=t;
  27. }
  28. char si[101],sj[101];
  29. for(int i=0;i<n-1;i++) // Pentru aceeasi inaltime sortez dupa nume si prenume
  30. for(int j=i+1;j<n;j++)
  31. if(v[j].inaltime==v[i].inaltime)
  32. {
  33. strcpy(si,v[i].nume); // concatenez nume si prenume pentru elevii i si j
  34. strcat(si,v[i].prenume);
  35. strcpy(sj,v[j].nume);
  36. strcat(sj,v[j].prenume);
  37. if(strcmp(sj,si)<0)
  38. {
  39. t=v[i];
  40. v[i]=v[j];
  41. v[j]=t; }
  42. }
  43. int k=0,nr=0,h=v[0].inaltime;
  44. for(int i=0;i<n;i++)
  45. {
  46. if(v[i].inaltime==h)
  47. k++;
  48. else
  49. {
  50. nr++;
  51. x[nr]=k;
  52. k=1;
  53. h=v[i].inaltime;
  54. }
  55. }
  56. nr++;
  57. x[nr]=k;
  58. fprintf(g,"%d\n",nr);
  59. int i,start=0;
  60. k=1;
  61. while(x[k]>0)
  62. {
  63. fprintf(g,"%d",x[k]);
  64. for(i=start;i<start+x[k];i++)
  65. fprintf(g," %s %s",v[i].nume,v[i].prenume);
  66. fprintf(g,"\n");
  67. start+=x[k];
  68. k++;
  69. }
  70. fclose(f);
  71. fclose(g);
  72. return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement