Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- /*xxxxxxxxxxxxxxxx
- Mikulás az égből
- Henter Márton
- xxxxxxxxxxxxxxxx*/
- /*
- 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,
- akiket arról a bázisról szolgáltak ki, ahonnan a legkevesebb gyereknek szállítottak ajándékot?
- 1.) Az a bázis, ahonnan a legkevesebb ajándékot szállították
- 2.) A bázison belül a legészakabbra fekvő lakás.
- 3.) Hány ajándékot kapott meg a keresett gyerek
- */
- /* $f dF ,
- .,,,... :$L ;$ ,dP
- ,!!!!!!!',cd$$$$$e, q 4$f,$$,z$"
- ,!!!!!!!',c$$$$$$$$$$$$c `$o`$$kuC3$$ .zf
- ,!!!!!!!',c$$$$$$P**""**?$c R$beeF?$$$$$"
- ;!!!!!!! c$$$$$$",eed$$F"?t" "$$$$bd$$$"
- ;!!!!!!!.d$$$$$F j"j$3$bf""?b?e, '$$$$$$P"
- !!!!!!: $$$$$$P J,f ,d$$b?$bde`$c .$k<?????>'$b
- !!!!!!!$$$$F".$$".u$$??P}"""^ ?$$c. d$$$$$dd$$$$$>
- `!!!!! ?L e$$ $$$$$P'zee^"$$$$boc"$$, R$$$$$$$$$$$$
- '!!! z$$$$$c,"$P'd$$F'zdbeereee$$$$$eu "??$$$$PF"
- Mn !! d$$$$$$$$ee z$P",d$$$$$$c?$$$$$$$$C '!!!::::!!!>
- MMM ,cec, '^$$$$$$$$$c,",e$$C?$$$$$$bc?$$$$$$$k !!!!!!!!!!!!
- MMM'.$$$$$$$, ?$$$$$$$$P$$$$$$$bc?T$$$$$$d$$$$$$$ . -.`!!!!!!!
- nMM d$$$$$$$F $$P???",e4$$$$$$$$bcc?$$$$$$$$$$$$ /~:.!!!!!!!!!
- n. "$$$$$$$' ::,"??e,.-.?$$$$$$$$$$$$$$$$$$$$F.C"m.`!!!!!!!'
- M":!:`""""" :!!!!!!i:."?o. "? ?$$$??$$$"$$F"$P<$$$b/4.`4!!!
- : 4!!!!h <!!!!!!!!!!: .CL.F'.zeElu. : ?eb o$$$$$$o(#c'`
- '`~!!~.ud !!````'!''``zd$$$$$`d$$$CuuJ" !: 4$$$$$$$$$$c"$c
- ." !~`z$$$":!!!~`..:i! d$$$$$$$`$$$$FCCJ" !!!: ?$$$$$$$$$b $L
- $$"z$$$$$":!!! :!!!!!'4$$$$$$$$`$$$$$" "" !!!!!:`$$$$$$$$$$ "
- ?o$$$$$$F !!!!!!!!!!! 4$$$$$$$$;?$P": JL \.~!!!!i $$$$P?"l.u-
- $$$$$$$$F!!!!!!!!!!!!:'R$$$$$$$E.:! $.$$c3$%:`!!! .l==7Cuec^ <
- $$$$$$$$ !!!!!!!!!!!!!i ?$$$$P"<!!! ?$`$$$$N. Rk`$$$$$$r\
- $$$$$$$$L`!!!!!!!!!!!!!!! .:::!!!''` $$$$$$ $c"??"7u+? !
- $$$$$$$$$ !!!!!!!!!!!'` :!!''` '"" .'?b"l.4d$ !!!:
- $$$$$$$$$b `!!!'''`.. '''` ...:::!!!!!! $$$.?$b'!!!>
- $$$$$$$$$$$beee@$$$$$$$$ ..:::!!!!!!!!!!!!!!!! 3$$b ?$c`!!!
- $$$$$$$$$$$$$$$$$$$$$$$f .::!!!!!!!!!!!!!!!!!!!!!!!!! d$$$$`$$b !!!
- $$$$$$$$$$$"3$$$$$$$$$":!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $$$$$,$$$k !!!
- $$$$$$$$$P,d$$$$$$$$F !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3$$$$$ $$$i`!!! 3>
- $$$$$$F$Fz$$$$$$$$$$ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! d$$$$$h`$$$,!!! $&
- $$$$$FJFx$$$$$$$$$$ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'4$$$$$$$ 9$$$.'.$$$L
- $$$$$ F.$$$$$$$$F.r !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $$$$$$$F ?$$$e$$$$F
- $$$$F .$$$$$$$$"d$$bu,,.```''!!!!!!!!!!!!!!!!'''''`,d$$$$$$$F.! ?$$$$$$F
- $$$$F d$$$$$$$$ $$$$$$$$$$$bc,,,,,,,,,,,,,,,,ccd$$$$$$$$$$$$ !!f ?$$$$"
- "$$$e$$$$$$$$&'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ !! $P"
- `"?$$$$$$$$$e`?$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ !!'
- `?$$$$$$$$$$e `""**???$$$$$$$$$$$$$$$$$$$$$$$P***""..:!!'
- "?$$$$$$$$k`!!!!!!;;;;;;::,,,...... ,,,,,;;!!!!!!!!!!
- ""???"" !!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!:
- !!!!!!!!!!!!!!!!!!!' !!!!!!!!!!!!!!!!!!
- !!!!!!!!!!!!!!!!. `!!!!!!!!!'''!!!!'
- :i !!!!!!!!!!!!!!!! .``''`.,uu,,.```.
- !!!!!!!!!!!!!!!!!~` d$$$$$$$$$$$$$$$$$>
- c.`~~~~~!!!!!:.. $$$$$$$$$$$$$$$$$$
- $$$$$eeeeeeeuuuee$ $$$$$$$$$$$$$$$$$"
- $$$$$$$$$$$$$$$$$$ """"...........
- ?$$$$$$$$$$$$$$$P" '!!!!!!!!!!!!!!
- .."""""""""".: !!!!!!!!!!!!!
- :!!!!!!!!!!!!!! `!!!!!!!!!!!'
- i!!!!!!!!!!!!!' !!!!!!!!!!!'::
- :!!!!!!!!!!!!! !!!!!!!!!!:!!:.
- !!!!!!!!!!'!!! . `!!!!!!!!!!!!`...
- `!!!!!!!! -'`` !!!!!!!!!!!!!!!!!!!!!::
- !!!!!!!!!i!!!: `~~~~~```~~~~~~~~~~~~`
- !!!!!!!!!!!!!!!.
- ```'!!!!!!!'``::..
- `!!!!!!!!!!!'
- ````` */
- typedef struct lakasok{
- unsigned hosszusag;
- unsigned szelesseg;
- unsigned penz;
- unsigned ajandekszam; /*ajándékok száma*/
- char ajandekok[27];
- struct lakasok *next;
- }address;
- typedef struct bazis{
- unsigned hosszusag;
- unsigned szelesseg;
- address bcimek; /*A bázishoz tartozó címek*/
- struct bazis *next;
- }base;
- void price_beolvas(unsigned arak){
- unsigned* buffer;
- FILE *file = fopen("PRICE.DAT","rb");
- buffer = &arak;
- fread(buffer,4,26,file);
- fclose(file);
- }
- void gift_beolvas(address cimek){
- int tmp = 0;
- char c;
- address *list;
- FILE *file;
- file = fopen("GIFT.TXT","r");
- list = &cimek;
- c = fgetc(file);
- while(c!=EOF){
- while(c!=' '){
- tmp*=10;
- tmp+=(int)c;
- tmp-= '0';
- c = fgetc(file);
- }
- cimek.hosszusag = tmp;
- tmp = 0;
- c = fgetc(file);
- while(c!='\n'){
- tmp*=10;
- tmp+=(int)c;
- tmp-= '0';
- c = fgetc(file);
- }
- cimek.szelesseg = tmp;
- tmp = 0;
- c = fgetc(file);
- if(c!='\n') cimek.ajandekok[tmp] = 0;
- c = fgetc(file);
- while(c!='\n'){
- tmp++;
- c = fgetc(file);
- cimek.ajandekok[tmp] = c;
- }
- tmp++;
- cimek.ajandekok[tmp]='\0';
- tmp = 0;
- c = fgetc(file);
- while(c!='\n'){
- tmp*=10;
- tmp+=(int)c;
- tmp-= '0';
- c = fgetc(file);
- }
- }
- fclose(file);
- }
- void base_beolvas(base bazisok){
- int i,tmp = 0;
- char c;
- base *list;
- FILE *file;
- file = fopen("BASE.DAT","rb");
- list = &bazisok;
- c = fgetc(file);
- while(c!=EOF){
- for(i=0;i<4;i++){
- tmp|=c;
- tmp<<8;
- c = fgetc(file);
- }
- list->hosszusag = tmp;
- tmp = 0;
- for(i=0;i<4;i++){
- tmp|=c;
- tmp<<8;
- c = fgetc(file);
- }
- list->szelesseg = tmp;
- tmp = 0;
- if(c!=EOF){
- list->next = (base*)malloc(sizeof(base));
- list = list->next;
- }
- }
- fclose(file);
- }
- double tavolsag(double x1, double x2, double y1, double y2){
- double x,y,tav;
- if(x1>x2){
- x = x1-x2;
- }else{
- x = x2-x1;
- }
- if(y1>y2){
- y = y1-y2;
- }else{
- y = y2-y1;
- }
- tav = sqrt((x*x)+(y*y));
- return tav;
- }
- void ajandekok_szama(address *cimek){ /*???eredetileg volt unsigned árak is paraméter, de az kell???*/
- address *leptet = cimek; /*ezzel megyünk végig a listán*/
- int tmp,i,j; /*tmp-ben szülők pénze*/
- while(leptet->next!=NULL){
- tmp = leptet->penz;
- leptet->ajandekszam = 0;
- i = 0;
- while(leptet->ajandekok[i]!='\0'){
- j = leptet->ajandekok[i];
- j-='0';
- if(j>tmp){ /*ha a következő ajándék ára nagyobb, mint amennyi pénzük van a szülőknek*/
- break;
- }
- tmp-=j;
- leptet->ajandekszam++;
- i++;
- }
- leptet = leptet->next;
- }
- }
- void lakas_bazishoz_fuzes(address *cimek, base *bazisok){
- address *akta = cimek; /*lista eleje*/
- address *deletea;
- base *elejeb = bazisok;
- base *aktb = elejeb;
- base *ide; /*ez mutatja, h melyik bázishoz tartozik*/
- address *hozzarendelt; /*ebbe töltjük be az adott címet, amit hozzárendelünk (ebbe másoljuk át)*/
- int tav,tmptav; /*tmptav-ban az aktuális bázis távolsága*/
- while(akta->next!=NULL){
- aktb = elejeb;
- ide = elejeb;
- tav = tavolsag(akta->hosszusag,aktb->hosszusag,akta->szelesseg,aktb->szelesseg);
- while(aktb->next!=NULL){
- tmptav = tavolsag(akta->hosszusag,aktb->hosszusag,akta->szelesseg,aktb->szelesseg);
- if(tmptav<tav){
- ide = aktb;
- tav = tmptav;
- }
- }
- hozzarendelt = &ide->bcimek;
- while(hozzarendelt->next!=NULL){
- hozzarendelt = hozzarendelt->next;
- }
- hozzarendelt->ajandekok[27] = akta->ajandekok[27];
- hozzarendelt->ajandekszam = akta->ajandekszam;
- hozzarendelt->hosszusag = akta->hosszusag;
- hozzarendelt->szelesseg = akta->szelesseg;
- hozzarendelt->penz = akta->penz;
- deletea = akta;
- akta = akta->next;
- free(deletea);
- hozzarendelt->next = (address*)malloc(sizeof(address));
- }
- }
- int sum(address *cimek){
- int tmp = 0;
- address *tmpcimek = cimek;
- while(tmpcimek->next!=NULL){
- tmp+=tmpcimek->ajandekszam;
- }
- return tmp;
- }
- base* legkevesebb_ajandekot_szallito_bazis(base *bazisok){
- int tmp1,tmp2; /*tmp1-ben a legkevesebb ajándékos bázis száma*/
- base *aktb;
- base *deleteb;
- base *legkevesebb = bazisok;
- aktb = bazisok;
- tmp1 = sum(aktb);
- aktb = aktb->next;
- while(aktb->next!=NULL){
- tmp2 = sum(aktb);
- if(tmp2<tmp1){
- tmp1 = tmp2;
- deleteb = legkevesebb;
- legkevesebb = aktb;
- }else{
- deleteb = aktb;
- }
- aktb = aktb->next;
- free(deleteb);
- }
- return legkevesebb;
- }
- int legeszakabbra_fekvo_lakas(base *legkevesebb){
- int tmp,tmplegeszakibb;
- base *aktb; /*???így kéne deklarálni és itt???*/
- address *lakasok = legkevesebb->bcimek;
- address *legeszakibb = lakasok;
- tmp = legeszakibb->hosszusag;
- while(lakasok->next!=NULL){
- tmp = lakasok->hosszusag;
- if(tmp>tmplegeszakibb){
- tmplegeszakibb = tmp;
- legeszakibb = aktb;
- }
- lakasok = lakasok->next;
- }
- return legeszakibb->ajandekszam;
- }
- int main(){
- unsigned eredmeny;
- unsigned arak[26];
- address cimek;
- base bazisok;
- price_beolvas(arak); /*price.dat beolvasása*/
- gift_beolvas(cimek); /*gift.txt beolvasása*/
- base_beolvas(bazisok); /*base.dat beolvasása*/
- ajandekok_szama(cimek);
- lakas_bazishoz_fuzes(cimek,bazisok);
- eredmeny = legeszakabbra_fekvo_lakas(legkevesebb_ajandekot_szallito_bazis(bazisok)); /*A legészakabbra fekvő lakás a bázison belül.*/
- printf("%d",eredmeny);
- return 0;
- }
Add Comment
Please, Sign In to add comment