Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.32 KB | None | 0 0
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3.  
  4. struct Jucator
  5. {
  6. char nume[50];
  7. char prenume[50];
  8. int xp;
  9. struct Jucator *urm;
  10. };
  11.  
  12. struct Echipa
  13. {
  14. struct Jucator *cap2;
  15. char nume_echipa[50];
  16. int nr_jucatori;
  17. double mediexp;
  18. struct Echipa *urm;
  19. };
  20.  
  21. struct meciuri
  22. {
  23. struct Echipa *e1;
  24. struct Echipa *e2;
  25. int castigatoare;
  26. struct meciuri *urm;
  27. };
  28.  
  29. int main()
  30. {
  31. FILE *fisierin=fopen("in.txt","rt");
  32. if(fisierin==NULL)
  33. {
  34. printf("Nu se poate deschide fisierul. \n");
  35. exit(1);
  36. }
  37. /////////////////////////
  38. struct Echipa *p,*cap,*q;
  39. struct Jucator *p2,*q2;
  40. int n,i,j,aux=0;
  41. /////////////////////////
  42. fscanf(fisierin,"%d",&n);
  43. p=(struct Echipa *)malloc(sizeof(struct Echipa));
  44. if(p==NULL)
  45. {
  46. printf("Nu a alocat.");
  47. exit(1);
  48. }
  49. fscanf(fisierin,"%d",&p->nr_jucatori);
  50. fgets(p->nume_echipa,50,fisierin);
  51. // fscanf(fisierin,"%s\n",p2->nume_echipa);
  52. //printf("%s\n\n\n\n\n",p->nume_echipa);
  53.  
  54. p2=(struct Jucator*)malloc(sizeof(struct Jucator));
  55. if(p2==NULL)
  56. {
  57. printf("Nu a alocat.");
  58. exit(1);
  59. }
  60. fscanf(fisierin,"%s",p2->nume);
  61. fscanf(fisierin,"%s",p2->prenume);
  62. fscanf(fisierin,"%d",&p2->xp);
  63. p2->urm=NULL;
  64. p->cap2=p2;
  65. for(j=1;j<p->nr_jucatori;j++)
  66. {
  67. q2=(struct Jucator*)malloc(sizeof(struct Jucator));
  68. if(q2==NULL)
  69. {
  70. printf("Nu a alocat.");
  71. exit(1);
  72. }
  73. fscanf(fisierin,"%s",q2->nume);
  74. fscanf(fisierin,"%s",q2->prenume);
  75. fscanf(fisierin,"%d",&q2->xp);
  76. q2->urm=NULL;
  77. p2->urm=q2;
  78. p2=q2;
  79. if(j==1)
  80. p->cap2->urm=q2;
  81. }
  82. p->urm=NULL;
  83. cap=p;
  84. //creare lista echipe
  85. for(i=1;i<n;i++)
  86. {
  87. q=(struct Echipa *)malloc(sizeof(struct Echipa));
  88. if(q==NULL)
  89. {
  90. printf("Nu a alocat.");
  91. exit(1);
  92. }
  93. fscanf(fisierin,"%d",&q->nr_jucatori);
  94. //fgets(q->nume_echipa,50,fisierin);
  95. fscanf(fisierin,"%s",q->nume_echipa);
  96. //creare lista jucatori pentru fiecare echipa
  97. p2=(struct Jucator*)malloc(sizeof(struct Jucator));
  98. if(p2==NULL)
  99. {
  100. printf("Nu a alocat.");
  101. exit(1);
  102. }
  103. fscanf(fisierin,"%s",p2->nume);
  104. fscanf(fisierin,"%s",p2->prenume);
  105. fscanf(fisierin,"%d",&p2->xp);
  106. p2->urm=NULL;
  107. q->cap2=p2;
  108. for(j=1;j<p->nr_jucatori;j++)
  109. {
  110. q2=(struct Jucator*)malloc(sizeof(struct Jucator));
  111. if(q2==NULL)
  112. {
  113. printf("Nu a alocat.");
  114. exit(1);
  115. }
  116. fscanf(fisierin,"%s",q2->nume);
  117. fscanf(fisierin,"%s",q2->prenume);
  118. fscanf(fisierin,"%d",&q2->xp);
  119. q2->urm=NULL;
  120. p2->urm=q2;
  121. p2=q2;
  122. if(j==1)
  123. p->cap2->urm=q2;
  124. }
  125. q->urm=NULL;
  126. p->urm=q;
  127. p=q;
  128. }
  129. p=cap;
  130. fclose(fisierin);
  131. for(i=0;i<n;i++)
  132. {
  133. printf("%d ",p->nr_jucatori);
  134. printf("%s\n",p->nume_echipa);
  135. p2=p->cap2;
  136. for(j=0;j<p->nr_jucatori;j++)
  137. {
  138. printf("%s ",p2->nume);
  139. printf("%s ",p2->prenume);
  140. printf("%d\n",p2->xp);
  141. p2=p2->urm;
  142. }
  143. p=p->urm;
  144. }
  145.  
  146. //calculmedie(cap);
  147.  
  148. //eliminare_echipe_in_plus(cap,n);
  149.  
  150. /*for(p=cap;p!=NULL;p=p->urm)
  151. aux++;
  152. aux=aux/2;
  153. for(i=0;i<aux;i++)
  154. crearemeciuri(cap);*/
  155. }
  156.  
  157. void calculmedie(struct Echipa **cap)
  158. {
  159. struct Echipa *p,*q;
  160. struct Jucator *p2,*q2;
  161. double medie=0.0;
  162. for(p=*cap;p!=NULL;p=p->urm)
  163. {
  164. for(p2=p->cap2;p2!=NULL;p2=p2->urm)
  165. medie= medie+p2->xp;
  166. medie=medie/p->nr_jucatori;
  167. p->mediexp=medie;
  168. }
  169. }
  170.  
  171. void eliminare_echipe_in_plus(struct Echipa **cap,int n)
  172. {
  173. int aux=1,nr;
  174. double aux2;
  175. struct Echipa *p,*q,*r;
  176. for(;aux*2<n;aux=aux*2);
  177. nr=n-aux;
  178. aux2=(*cap)->mediexp;
  179. while(nr!=0)
  180. {
  181. for(p=*cap;p!=NULL;p=p->urm)
  182. if(aux2>p->mediexp)
  183. aux2=p->mediexp;
  184. for(p=*cap;p->urm!=NULL;p=p->urm);
  185. q=p;
  186. p=*cap;
  187. if(p->mediexp==aux2||q->mediexp==aux2)
  188. if(p->mediexp==aux2)
  189. {
  190. *cap=p->urm;
  191. free(p);
  192. p=*cap;
  193. }
  194. else
  195. {
  196. for(r=*cap;r->urm->urm!=NULL;r=r->urm);
  197. r->urm=NULL;
  198. free(q);
  199. q=r;
  200. }
  201. else
  202. for(p=*cap;p->urm=NULL;p=p->urm)
  203. {
  204. q=p->urm;
  205. if(aux2==q->mediexp)
  206. {
  207. p->urm=q->urm;
  208. free(q);
  209. break;
  210. }
  211. }
  212. nr--;
  213. }
  214. FILE *fisierout;
  215. fisierout=fopen("out.txt","at");
  216. if(fisierout==NULL)
  217. {
  218. printf("Nu s-a deschis fisierul.");
  219. exit(1);
  220. }
  221. for(p=*cap;p!=NULL;p=p->urm)
  222. fprintf(fisierout,"%s\n",p->nume_echipa);
  223. fclose(fisierout);
  224. }
  225.  
  226. void crearemeciuri(struct Echipa **cap)
  227. {
  228. struct meciuri *p3,*q3,*cap3;
  229. struct Echipa *p,*q;
  230. int aux=0,aux2;
  231. for(p=*cap;p!=NULL;p=p->urm)
  232. aux=aux+1;
  233. aux=aux/2;
  234. p=(*cap);
  235. p3=(struct meciuri *)malloc(sizeof(struct meciuri));
  236. if(p3==NULL)
  237. {
  238. printf("Nu a alocat.");
  239. exit(1);
  240. }
  241. p3->e1=p;
  242. p3->e2=p->urm;
  243. p3->urm=NULL;
  244. cap3=p3;
  245. for(aux2=1;aux2<aux;aux2++)
  246. {
  247. q3=(struct meciuri *)malloc(sizeof(struct meciuri));
  248. if(q3==NULL)
  249. {
  250. printf("Nu a alocat.");
  251. exit(1);
  252. }
  253. p=p->urm->urm;
  254. q3->e1=p;
  255. q3->e2=p->urm;
  256. p3->urm=q3;
  257. q3->urm=NULL;
  258. p3=q3;
  259. }
  260. FILE *fisierout;
  261. fisierout=fopen("out.txt","at");
  262. if(fisierout==NULL)
  263. {
  264. printf("Nu s-a deschis fisierul.");
  265. exit(1);
  266. }
  267. for(p3=cap3;p3!=NULL;p3=p3->urm)
  268. fprintf(fisierout,"%s -- %s\n",p3->e1,p3->e2);
  269. //FA MECIURILE SI PUNELE UN OUT
  270. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement