Guest User

Untitled

a guest
Apr 21st, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.96 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. /*xxxxxxxxxxxxxxxx
  6. Mikulás az égbol
  7. Henter Márton
  8. xxxxxxxxxxxxxxxx*/
  9.  
  10. /*
  11. Hány ajándékot kapott meg listájáról az a gyerek, akinek lakcíme a leginkább északra esik azok közül a gyerekek közül,
  12. akiket arról a bázisról szolgáltak ki, ahonnan a legkevesebb gyereknek szállítottak ajándékot?
  13.  
  14. 1.) Az a bázis, ahonnan a legkevesebb ajándékot szállították
  15. 2.) A bázison belül a legészakabbra fekvo lakás.
  16. 3.) Hány ajándékot kapott meg a keresett gyerek
  17. */
  18.  
  19.  
  20. /* $f dF ,
  21. .,,,... :$L ;$ ,dP
  22. ,!!!!!!!',cd$$$$$e, q 4$f,$$,z$"
  23. ,!!!!!!!',c$$$$$$$$$$$$c `$o`$$kuC3$$ .zf
  24. ,!!!!!!!',c$$$$$$P**""**?$c R$beeF?$$$$$"
  25. ;!!!!!!! c$$$$$$",eed$$F"?t" "$$$$bd$$$"
  26. ;!!!!!!!.d$$$$$F j"j$3$bf""?b?e, '$$$$$$P"
  27. !!!!!!: $$$$$$P J,f ,d$$b?$bde`$c .$k<?????>'$b
  28. !!!!!!!$$$$F".$$".u$$??P}"""^ ?$$c. d$$$$$dd$$$$$>
  29. `!!!!! ?L e$$ $$$$$P'zee^"$$$$boc"$$, R$$$$$$$$$$$$
  30. '!!! z$$$$$c,"$P'd$$F'zdbeereee$$$$$eu "??$$$$PF"
  31. Mn !! d$$$$$$$$ee z$P",d$$$$$$c?$$$$$$$$C '!!!::::!!!>
  32. MMM ,cec, '^$$$$$$$$$c,",e$$C?$$$$$$bc?$$$$$$$k !!!!!!!!!!!!
  33. MMM'.$$$$$$$, ?$$$$$$$$P$$$$$$$bc?T$$$$$$d$$$$$$$ . -.`!!!!!!!
  34. nMM d$$$$$$$F $$P???",e4$$$$$$$$bcc?$$$$$$$$$$$$ /~:.!!!!!!!!!
  35. n. "$$$$$$$' ::,"??e,.-.?$$$$$$$$$$$$$$$$$$$$F.C"m.`!!!!!!!'
  36. M":!:`""""" :!!!!!!i:."?o. "? ?$$$??$$$"$$F"$P<$$$b/4.`4!!!
  37. : 4!!!!h <!!!!!!!!!!: .CL.F'.zeElu. : ?eb o$$$$$$o(#c'`
  38. '`~!!~.ud !!````'!''``zd$$$$$`d$$$CuuJ" !: 4$$$$$$$$$$c"$c
  39. ." !~`z$$$":!!!~`..:i! d$$$$$$$`$$$$FCCJ" !!!: ?$$$$$$$$$b $L
  40. $$"z$$$$$":!!! :!!!!!'4$$$$$$$$`$$$$$" "" !!!!!:`$$$$$$$$$$ "
  41. ?o$$$$$$F !!!!!!!!!!! 4$$$$$$$$;?$P": JL \.~!!!!i $$$$P?"l.u-
  42. $$$$$$$$F!!!!!!!!!!!!:'R$$$$$$$E.:! $.$$c3$%:`!!! .l==7Cuec^ <
  43. $$$$$$$$ !!!!!!!!!!!!!i ?$$$$P"<!!! ?$`$$$$N. Rk`$$$$$$r\
  44. $$$$$$$$L`!!!!!!!!!!!!!!! .:::!!!''` $$$$$$ $c"??"7u+? !
  45. $$$$$$$$$ !!!!!!!!!!!'` :!!''` '"" .'?b"l.4d$ !!!:
  46. $$$$$$$$$b `!!!'''`.. '''` ...:::!!!!!! $$$.?$b'!!!>
  47. $$$$$$$$$$$beee@$$$$$$$$ ..:::!!!!!!!!!!!!!!!! 3$$b ?$c`!!!
  48. $$$$$$$$$$$$$$$$$$$$$$$f .::!!!!!!!!!!!!!!!!!!!!!!!!! d$$$$`$$b !!!
  49. $$$$$$$$$$$"3$$$$$$$$$":!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $$$$$,$$$k !!!
  50. $$$$$$$$$P,d$$$$$$$$F !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3$$$$$ $$$i`!!! 3>
  51. $$$$$$F$Fz$$$$$$$$$$ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! d$$$$$h`$$$,!!! $&
  52. $$$$$FJFx$$$$$$$$$$ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'4$$$$$$$ 9$$$.'.$$$L
  53. $$$$$ F.$$$$$$$$F.r !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $$$$$$$F ?$$$e$$$$F
  54. $$$$F .$$$$$$$$"d$$bu,,.```''!!!!!!!!!!!!!!!!'''''`,d$$$$$$$F.! ?$$$$$$F
  55. $$$$F d$$$$$$$$ $$$$$$$$$$$bc,,,,,,,,,,,,,,,,ccd$$$$$$$$$$$$ !!f ?$$$$"
  56. "$$$e$$$$$$$$&'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ !! $P"
  57. `"?$$$$$$$$$e`?$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ !!'
  58. `?$$$$$$$$$$e `""**???$$$$$$$$$$$$$$$$$$$$$$$P***""..:!!'
  59. "?$$$$$$$$k`!!!!!!;;;;;;::,,,...... ,,,,,;;!!!!!!!!!!
  60. ""???"" !!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!:
  61. !!!!!!!!!!!!!!!!!!!' !!!!!!!!!!!!!!!!!!
  62. !!!!!!!!!!!!!!!!. `!!!!!!!!!'''!!!!'
  63. :i !!!!!!!!!!!!!!!! .``''`.,uu,,.```.
  64. !!!!!!!!!!!!!!!!!~` d$$$$$$$$$$$$$$$$$>
  65. c.`~~~~~!!!!!:.. $$$$$$$$$$$$$$$$$$
  66. $$$$$eeeeeeeuuuee$ $$$$$$$$$$$$$$$$$"
  67. $$$$$$$$$$$$$$$$$$ """"...........
  68. ?$$$$$$$$$$$$$$$P" '!!!!!!!!!!!!!!
  69. .."""""""""".: !!!!!!!!!!!!!
  70. :!!!!!!!!!!!!!! `!!!!!!!!!!!'
  71. i!!!!!!!!!!!!!' !!!!!!!!!!!'::
  72. :!!!!!!!!!!!!! !!!!!!!!!!:!!:.
  73. !!!!!!!!!!'!!! . `!!!!!!!!!!!!`...
  74. `!!!!!!!! -'`` !!!!!!!!!!!!!!!!!!!!!::
  75. !!!!!!!!!i!!!: `~~~~~```~~~~~~~~~~~~`
  76. !!!!!!!!!!!!!!!.
  77. ```'!!!!!!!'``::..
  78. `!!!!!!!!!!!'
  79. ````` */
  80.  
  81.  
  82.  
  83. typedef struct lakasok{
  84. int hosszusag;
  85. int szelesseg;
  86. int penz;
  87. int ajandekszam; /*ajándékok száma*/
  88. char ajandekok[27];
  89. struct lakasok *next;
  90. }address;
  91.  
  92. typedef struct bazis{
  93. int hosszusag;
  94. int szelesseg;
  95. address bcimek; /*A bázishoz tartozó címek*/
  96. struct bazis *next;
  97. }base;
  98.  
  99. void price_beolvas(int arak[]){
  100. FILE *file = fopen("PRICE.DAT","rb");
  101. fread(&arak,4,26,file);
  102. fclose(file);
  103. }
  104.  
  105. void gift_beolvas(address cimek){
  106. int tmp = 0;
  107. char c;
  108. address *list = &cimek;
  109. FILE *file;
  110. file = fopen("GIFT.TXT","r");
  111. c = fgetc(file);
  112. while(c!=EOF){
  113. while(c!=' '){
  114. tmp*=10;
  115. tmp+=(int)c;
  116. tmp-= '0';
  117. c = fgetc(file);
  118. }
  119. list->hosszusag = tmp;
  120.  
  121. tmp = 0;
  122. c = fgetc(file);
  123. while(c!='\n'){
  124. tmp*=10;
  125. tmp+=(int)c;
  126. tmp-= '0';
  127. c = fgetc(file);
  128. }
  129. list->szelesseg = tmp;
  130.  
  131. tmp = 0;
  132. c = 'A';
  133. while(c!='\n'){
  134. c=fgetc(file);
  135. list->ajandekok[tmp]=c;
  136. tmp++;
  137. c=fgetc(file);
  138. }
  139. list->ajandekok[tmp]='\0';
  140.  
  141. tmp = 0;
  142. c = fgetc(file);
  143. while(c!='\n'){
  144. tmp*=10;
  145. tmp+=(int)c;
  146. tmp-= '0';
  147. c = fgetc(file);
  148. }
  149. list->penz = tmp;
  150. list->next=(address*)malloc(sizeof(address));
  151. list=list->next;
  152. }
  153. fclose(file);
  154. }
  155.  
  156. void base_beolvas(base bazisok){
  157. int i,tmp = 0;
  158. char c;
  159. base *list;
  160. FILE *file;
  161. file = fopen("BASE.DAT","rb");
  162. list = &bazisok;
  163. c = fgetc(file);
  164. while(c!=EOF){
  165. for(i=0;i<4;i++){
  166. tmp|=c;
  167. tmp = tmp<<8;
  168. c = fgetc(file);
  169. }
  170. list->hosszusag = tmp;
  171. tmp = 0;
  172. for(i=0;i<4;i++){
  173. tmp|=c;
  174. tmp = tmp<<8;
  175. c = fgetc(file);
  176. }
  177. list->szelesseg = tmp;
  178. tmp = 0;
  179. list->next = (base*)malloc(sizeof(base));
  180. list = list->next;
  181. }
  182. fclose(file);
  183. }
  184.  
  185. double tavolsag(double x1, double x2, double y1, double y2){
  186. double x,y,tav;
  187. if(x1>x2){
  188. x = x1-x2;
  189. }else{
  190. x = x2-x1;
  191. }
  192. if(y1>y2){
  193. y = y1-y2;
  194. }else{
  195. y = y2-y1;
  196. }
  197. tav = sqrt((x*x)+(y*y));
  198. return tav;
  199. }
  200.  
  201. void ajandekok_szama(address cimek, int arak[]){
  202. address *leptet = &cimek; /*ezzel megyünk végig a listán*/
  203. int tmp,i,j; /*tmp-ben szülok pénze*/
  204. while(leptet->next!=NULL){
  205. tmp = leptet->penz;
  206. leptet->ajandekszam = 0;
  207. i = 0;
  208. while(leptet->ajandekok[i]!='\0'){
  209. j = leptet->ajandekok[i];
  210. j-='A';
  211. j=arak[j];
  212. if(j>tmp){ /*ha a következo ajándék ára nagyobb, mint amennyi pénzük van a szüloknek*/
  213. break;
  214. }
  215. tmp-=j;
  216. leptet->ajandekszam++;
  217. i++;
  218. }
  219. leptet = leptet->next;
  220. }
  221. }
  222.  
  223. void lakas_bazishoz_fuzes(address cimek, base bazisok){
  224. address *akta = &cimek; /*lista eleje*/
  225. address *deletea;
  226. base *elejeb = &bazisok;
  227. base *aktb = elejeb;
  228. base *ide; /*ez mutatja, h melyik bázishoz tartozik*/
  229. address *hozzarendelt; /*ebbe töltjük be az adott címet, amit hozzárendelünk (ebbe másoljuk át)*/
  230. double tav,tmptav; /*tmptav-ban az aktuális bázis távolsága*/
  231. while(akta->next!=NULL){
  232. aktb = elejeb;
  233. ide = elejeb;
  234. tav = tavolsag(akta->hosszusag,aktb->hosszusag,akta->szelesseg,aktb->szelesseg);
  235. while(aktb->next!=NULL){
  236. tmptav = tavolsag(akta->hosszusag,aktb->hosszusag,akta->szelesseg,aktb->szelesseg);
  237. if(tmptav<tav){
  238. ide = aktb;
  239. tav = tmptav;
  240. }
  241. }
  242. hozzarendelt = &ide->bcimek;
  243. while(hozzarendelt->next!=NULL){
  244. hozzarendelt = hozzarendelt->next;
  245. }
  246. hozzarendelt->ajandekok[27] = akta->ajandekok[27];
  247. hozzarendelt->ajandekszam = akta->ajandekszam;
  248. hozzarendelt->hosszusag = akta->hosszusag;
  249. hozzarendelt->szelesseg = akta->szelesseg;
  250. hozzarendelt->penz = akta->penz;
  251. deletea = akta;
  252. akta = akta->next;
  253. free(deletea);
  254. hozzarendelt->next = (address*)malloc(sizeof(address));
  255. }
  256.  
  257. }
  258.  
  259. int sumgift(base *tmpbase){
  260. int tmp = 0;
  261. address *tmpcimek = &tmpbase->bcimek;
  262. while(tmpcimek->next!=NULL){
  263. tmp+=tmpcimek->ajandekszam;
  264. }
  265. return tmp;
  266. }
  267.  
  268. base legkevesebb_ajandekot_szallito_bazis(base bazisok){
  269. int tmp1,tmp2; /*tmp1-ben a legkevesebb ajándékos bázis száma*/
  270. base *aktb;
  271. base *deleteb;
  272. base *legkevesebb = &bazisok;
  273. aktb = &bazisok;
  274. tmp1 = sumgift(aktb);
  275. aktb = aktb->next;
  276. while(aktb->next!=NULL){
  277. tmp2 = sumgift(aktb);
  278. if(tmp2<tmp1){
  279. tmp1 = tmp2;
  280. deleteb = legkevesebb;
  281. legkevesebb = aktb;
  282. }else{
  283. deleteb = aktb;
  284. }
  285. aktb = aktb->next;
  286. free(deleteb);
  287. }
  288. return *legkevesebb;
  289. }
  290.  
  291. int legeszakabbra_fekvo_lakas(base legkevesebb){
  292. int tmp,tmplegeszakibb;
  293. address *lakasok = &legkevesebb.bcimek;
  294. address *legeszakibb = lakasok;
  295. tmp = legeszakibb->hosszusag;
  296. while(lakasok->next!=NULL){
  297. tmp = lakasok->hosszusag;
  298. if(tmp>tmplegeszakibb){
  299. tmplegeszakibb = tmp;
  300. legeszakibb = lakasok;
  301. }
  302. lakasok = lakasok->next;
  303. }
  304. return legeszakibb->ajandekszam;
  305. }
  306.  
  307. int main(){
  308. int eredmeny;
  309. int arak[26];
  310.  
  311. address cimek;
  312. base bazisok;
  313.  
  314. price_beolvas(arak); /*price.dat beolvasása*/
  315. gift_beolvas(cimek); /*gift.txt beolvasása*/
  316. base_beolvas(bazisok); /*base.dat beolvasása*/
  317. ajandekok_szama(cimek,arak);
  318. lakas_bazishoz_fuzes(cimek,bazisok);
  319. eredmeny = legeszakabbra_fekvo_lakas(legkevesebb_ajandekot_szallito_bazis(bazisok)); /*A legészakabbra fekvo lakás a bázison belül.*/
  320. printf("%d\n",eredmeny);
  321.  
  322. return 0;
  323. }
Add Comment
Please, Sign In to add comment