Guest User

Untitled

a guest
Apr 21st, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.63 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. /*xxxxxxxxxxxxxxxx
  6. Mikulás az égből
  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 fekvő 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. unsigned hosszusag;
  85. unsigned szelesseg;
  86. unsigned penz;
  87. unsigned ajandekszam; /*ajándékok száma*/
  88. char ajandekok[27];
  89. struct lakasok *next;
  90. }address;
  91.  
  92. typedef struct bazis{
  93. unsigned hosszusag;
  94. unsigned szelesseg;
  95. address bcimek; /*A bázishoz tartozó címek*/
  96. struct bazis *next;
  97. }base;
  98.  
  99. void price_beolvas(unsigned arak){
  100. unsigned* buffer;
  101. FILE *file = fopen("PRICE.DAT","rb");
  102. buffer = &arak;
  103. fread(buffer,4,26,file);
  104. fclose(file);
  105. }
  106.  
  107. void gift_beolvas(address cimek){
  108. int tmp = 0;
  109. char c;
  110. address *list;
  111. FILE *file;
  112. file = fopen("GIFT.TXT","r");
  113. list = &cimek;
  114. c = fgetc(file);
  115. while(c!=EOF){
  116. while(c!=' '){
  117. tmp*=10;
  118. tmp+=(int)c;
  119. tmp-= '0';
  120. c = fgetc(file);
  121. }
  122. cimek.hosszusag = tmp;
  123.  
  124. tmp = 0;
  125. c = fgetc(file);
  126. while(c!='\n'){
  127. tmp*=10;
  128. tmp+=(int)c;
  129. tmp-= '0';
  130. c = fgetc(file);
  131. }
  132. cimek.szelesseg = tmp;
  133.  
  134. tmp = 0;
  135. c = fgetc(file);
  136. if(c!='\n') cimek.ajandekok[tmp] = 0;
  137. c = fgetc(file);
  138. while(c!='\n'){
  139. tmp++;
  140. c = fgetc(file);
  141. cimek.ajandekok[tmp] = c;
  142. }
  143. tmp++;
  144. cimek.ajandekok[tmp]='\0';
  145.  
  146. tmp = 0;
  147. c = fgetc(file);
  148. while(c!='\n'){
  149. tmp*=10;
  150. tmp+=(int)c;
  151. tmp-= '0';
  152. c = fgetc(file);
  153. }
  154. }
  155. fclose(file);
  156. }
  157.  
  158. void base_beolvas(base bazisok){
  159. int i,tmp = 0;
  160. char c;
  161. base *list;
  162. FILE *file;
  163. file = fopen("BASE.DAT","rb");
  164. list = &bazisok;
  165. c = fgetc(file);
  166. while(c!=EOF){
  167. for(i=0;i<4;i++){
  168. tmp|=c;
  169. tmp<<8;
  170. c = fgetc(file);
  171. }
  172. list->hosszusag = tmp;
  173. tmp = 0;
  174. for(i=0;i<4;i++){
  175. tmp|=c;
  176. tmp<<8;
  177. c = fgetc(file);
  178. }
  179. list->szelesseg = tmp;
  180. tmp = 0;
  181. if(c!=EOF){
  182. list->next = (base*)malloc(sizeof(base));
  183. list = list->next;
  184. }
  185. }
  186. fclose(file);
  187. }
  188.  
  189. double tavolsag(double x1, double x2, double y1, double y2){
  190. double x,y,tav;
  191. if(x1>x2){
  192. x = x1-x2;
  193. }else{
  194. x = x2-x1;
  195. }
  196. if(y1>y2){
  197. y = y1-y2;
  198. }else{
  199. y = y2-y1;
  200. }
  201. tav = sqrt((x*x)+(y*y));
  202. return tav;
  203. }
  204.  
  205. void ajandekok_szama(address *cimek){ /*???eredetileg volt unsigned árak is paraméter, de az kell???*/
  206. address *leptet = cimek; /*ezzel megyünk végig a listán*/
  207. int tmp,i,j; /*tmp-ben szülők pénze*/
  208. while(leptet->next!=NULL){
  209. tmp = leptet->penz;
  210. leptet->ajandekszam = 0;
  211. i = 0;
  212. while(leptet->ajandekok[i]!='\0'){
  213. j = leptet->ajandekok[i];
  214. j-='0';
  215. if(j>tmp){ /*ha a következő ajándék ára nagyobb, mint amennyi pénzük van a szülőknek*/
  216. break;
  217. }
  218. tmp-=j;
  219. leptet->ajandekszam++;
  220. i++;
  221. }
  222. leptet = leptet->next;
  223. }
  224. }
  225.  
  226. void lakas_bazishoz_fuzes(address *cimek, base *bazisok){
  227. address *akta = cimek; /*lista eleje*/
  228. address *deletea;
  229. base *elejeb = bazisok;
  230. base *aktb = elejeb;
  231. base *ide; /*ez mutatja, h melyik bázishoz tartozik*/
  232. address *hozzarendelt; /*ebbe töltjük be az adott címet, amit hozzárendelünk (ebbe másoljuk át)*/
  233. int tav,tmptav; /*tmptav-ban az aktuális bázis távolsága*/
  234. while(akta->next!=NULL){
  235. aktb = elejeb;
  236. ide = elejeb;
  237. tav = tavolsag(akta->hosszusag,aktb->hosszusag,akta->szelesseg,aktb->szelesseg);
  238. while(aktb->next!=NULL){
  239. tmptav = tavolsag(akta->hosszusag,aktb->hosszusag,akta->szelesseg,aktb->szelesseg);
  240. if(tmptav<tav){
  241. ide = aktb;
  242. tav = tmptav;
  243. }
  244. }
  245. hozzarendelt = &ide->bcimek;
  246. while(hozzarendelt->next!=NULL){
  247. hozzarendelt = hozzarendelt->next;
  248. }
  249. hozzarendelt->ajandekok[27] = akta->ajandekok[27];
  250. hozzarendelt->ajandekszam = akta->ajandekszam;
  251. hozzarendelt->hosszusag = akta->hosszusag;
  252. hozzarendelt->szelesseg = akta->szelesseg;
  253. hozzarendelt->penz = akta->penz;
  254. deletea = akta;
  255. akta = akta->next;
  256. free(deletea);
  257. hozzarendelt->next = (address*)malloc(sizeof(address));
  258. }
  259.  
  260. }
  261.  
  262. int sum(address *cimek){
  263. int tmp = 0;
  264. address *tmpcimek = cimek;
  265. while(tmpcimek->next!=NULL){
  266. tmp+=tmpcimek->ajandekszam;
  267. }
  268. return tmp;
  269. }
  270.  
  271. base* legkevesebb_ajandekot_szallito_bazis(base *bazisok){
  272. int tmp1,tmp2; /*tmp1-ben a legkevesebb ajándékos bázis száma*/
  273. base *aktb;
  274. base *deleteb;
  275. base *legkevesebb = bazisok;
  276. aktb = bazisok;
  277. tmp1 = sum(aktb);
  278. aktb = aktb->next;
  279. while(aktb->next!=NULL){
  280. tmp2 = sum(aktb);
  281. if(tmp2<tmp1){
  282. tmp1 = tmp2;
  283. deleteb = legkevesebb;
  284. legkevesebb = aktb;
  285. }else{
  286. deleteb = aktb;
  287. }
  288. aktb = aktb->next;
  289. free(deleteb);
  290. }
  291. return legkevesebb;
  292. }
  293.  
  294. int legeszakabbra_fekvo_lakas(base *legkevesebb){
  295. int tmp,tmplegeszakibb;
  296. base *aktb; /*???így kéne deklarálni és itt???*/
  297. address *lakasok = legkevesebb->bcimek;
  298. address *legeszakibb = lakasok;
  299. tmp = legeszakibb->hosszusag;
  300. while(lakasok->next!=NULL){
  301. tmp = lakasok->hosszusag;
  302. if(tmp>tmplegeszakibb){
  303. tmplegeszakibb = tmp;
  304. legeszakibb = aktb;
  305. }
  306. lakasok = lakasok->next;
  307. }
  308. return legeszakibb->ajandekszam;
  309. }
  310.  
  311. int main(){
  312. unsigned eredmeny;
  313. unsigned arak[26];
  314.  
  315. address cimek;
  316. base bazisok;
  317.  
  318. price_beolvas(arak); /*price.dat beolvasása*/
  319. gift_beolvas(cimek); /*gift.txt beolvasása*/
  320. base_beolvas(bazisok); /*base.dat beolvasása*/
  321. ajandekok_szama(cimek);
  322. lakas_bazishoz_fuzes(cimek,bazisok);
  323. eredmeny = legeszakabbra_fekvo_lakas(legkevesebb_ajandekot_szallito_bazis(bazisok)); /*A legészakabbra fekvő lakás a bázison belül.*/
  324. printf("%d",eredmeny);
  325.  
  326. return 0;
  327. }
Add Comment
Please, Sign In to add comment