Guest User

Untitled

a guest
Apr 23rd, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.93 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct konyv{
  6.     char nev[31];
  7.     int darab;
  8.     char megr[11];
  9. };
  10.  
  11. int sorokszama(char *fn){
  12.     int r = 1;
  13.     FILE * F = fopen(fn, "r");
  14.     char buf;
  15.     while(!feof(F)){
  16.         if(fread(&buf, sizeof(char), 1, F) && buf == '\n') r++;
  17.     }
  18.     fclose(F);
  19.     return r;
  20. }
  21.  
  22. int olvas(char *fn, struct konyv ** pkonyvek){
  23.     int sorok = sorokszama(fn);
  24.     FILE * F = fopen(fn, "r");
  25.     *pkonyvek = (struct konyv*)malloc(sizeof(struct konyv)*sorok);
  26.     int idxA;
  27.     for(idxA = 0; idxA < sorok; idxA++){
  28.         fscanf(F, "%s", (*pkonyvek+idxA)->nev);
  29.         fscanf(F, "%d", &(*pkonyvek+idxA)->darab);
  30.         fscanf(F, "%s", (*pkonyvek+idxA)->megr);
  31.     }
  32.     fclose(F);
  33.     return sorok;
  34. }
  35.  
  36. void torol(struct konyv ** pkonyvek){
  37.     free(*pkonyvek);
  38.     *pkonyvek = NULL;
  39. }
  40.  
  41. int menuinput(){
  42.     int i;
  43.     printf("Valassz menupontot:\n");
  44.     printf("1 | Listazas\n2 | Darabszam modositas\n3 | Kilepes\n");
  45.     scanf("%d", &i);
  46.     return i;
  47. }
  48.  
  49. void kiir(struct konyv ** pkonyvek, int c){
  50.     int idxA;
  51.     printf("Konyvek:\n");
  52.     for(idxA = 0; idxA < c; idxA++){
  53.         printf("Cim: %s, Db: %d, Nick: %s\n", (*pkonyvek+idxA)->nev, (idxA+*pkonyvek)->darab, (idxA+*pkonyvek)->megr);
  54.     }
  55. }
  56.  
  57. void mod(struct konyv ** pkonyvek, int c){
  58.     printf("Melyik konyvet szeretned modostani?");
  59.     char input[31];
  60.     scanf("%s", input);
  61.     int idxA;
  62.     for(idxA = 0; idxA < c && 0 != strcmp((*pkonyvek+idxA)->nev, input); idxA++);
  63.     if(idxA == c){
  64.         printf("A megadott konyv nem letezik...\n");
  65.     } else {
  66.         printf("Mennyire szeretned allitani a darabszamot?");
  67.         int tdb;
  68.         scanf("%d", &tdb);
  69.         (*pkonyvek+idxA)->darab = tdb;
  70.         printf("A darabszam sikeresen modositva...\n");
  71.     }
  72. }
  73.  
  74. void menu(struct konyv ** pkonyvek, int c){
  75.     int i;
  76.     while((i = menuinput()) != 3){
  77.         switch(i){
  78.             case 1:
  79.                 kiir(pkonyvek, c);
  80.             break;
  81.             case 2:
  82.                 mod(pkonyvek, c);
  83.             break;
  84.             default:
  85.                 printf("Something went wrong...");
  86.             break;
  87.         }
  88.     }
  89.     printf("A program kilep...");
  90.     torol(pkonyvek);
  91. }
  92.  
  93.  
  94. int main(void){
  95.     setbuf(stdout, 0);
  96.     struct konyv * konyvek;
  97.     int db = olvas("konyv.txt", &konyvek);
  98.     menu(&konyvek, db);
  99.     return 0;
  100. }
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144. /*#include <stdio.h>
  145. #include <stdlib.h>
  146.  
  147. struct aknamezo{
  148.     int w;
  149.     int h;
  150.     int ca;
  151.     int **pm;
  152. };
  153.  
  154. void foglal(struct aknamezo * akna){
  155.     akna->pm = (int**)malloc(akna->h*sizeof(int*));
  156.     int idxA;
  157.     for(idxA = 0; idxA < akna->h; idxA++){
  158.         *(akna->pm+idxA) = (int*)malloc(akna->w*sizeof(int*));
  159.     }
  160. }
  161.  
  162. void torol(struct aknamezo * akna){
  163.     int idxA;
  164.         for(idxA = 0; idxA < akna->h; idxA++){
  165.             free(*(akna->pm+idxA));
  166.             *(akna->pm+idxA) = NULL;
  167.         }
  168.         free(akna->pm);
  169.         akna->pm = NULL;
  170. }
  171.  
  172. void init(struct aknamezo * akna){
  173.     int idxA, idxB;
  174.     for(idxA = 0; idxA < akna->h; idxA++){
  175.         for(idxB=0; idxB < akna->w; idxB++){
  176.             (akna->pm)[idxA][idxB] = 0;
  177.         }
  178.     }
  179.     akna->ca = 0;
  180. }
  181.  
  182. void hozzaad(struct aknamezo * akna){
  183.     int akx,aky;
  184.     printf("Aknatelepites... (NULLATOL INDEXELUNK)");
  185.     do{
  186.         printf("Sor: ");
  187.         scanf("%d", &aky);
  188.         printf("Oszlop: ");
  189.         scanf("%d", &akx);
  190.     } while(!(aky >= 0 && aky < akna->h && akx >= 0 && akx < akna->w));
  191.     printf("Akna telepitve...");
  192. }
  193.  
  194. void beolvas(struct aknamezo * akna, char* fn){
  195.     FILE * fl = fopen(fn, "r");
  196.     fscanf(fl, "%d", &akna->w);
  197.     fscanf(fl, "%d", &akna->h);
  198.     foglal(akna);
  199.     init(akna);
  200.     int aky, akx;
  201.     while(!feof(fl)){
  202.         if(fscanf(fl, "%d", &aky) && fscanf(fl, "%d", &akx)){
  203.         (akna->pm)[aky][akx] = 1; akna->ca++;
  204.         }
  205.     }
  206.     if(akna->ca == 0){
  207.         hozzaad(akna);
  208.     }
  209.     fclose(fl);
  210. }
  211.  
  212. struct irany{
  213.     int x;
  214.     int y;
  215. };
  216.  
  217. void iranyk(struct irany * ir, struct irany poz, struct aknamezo * akna){
  218.     do{
  219.     printf("Merre akarsz lepni?\n1 | FEL\n2 | JOBBRA\n3 | LE\n4 | BALRA\n");
  220.     int input;
  221.     scanf("%d", &input);
  222.     switch(input){
  223.     case 1:
  224.         ir->y = -1;
  225.         ir->x = 0;
  226.     break;
  227.     case 2:
  228.             ir->y = 0;
  229.             ir->x = 1;
  230.     break;
  231.     case 3:
  232.             ir->y = 1;
  233.             ir->x = 0;
  234.     break;
  235.     case 4:
  236.             ir->y = 0;
  237.             ir->x = -1;
  238.     break;
  239.     }
  240.     } while (!(poz.x+ir->x >= 0 && poz.x+ir->x < akna->w && poz.y+ir->y >= 0 && poz.y+ir->y < akna->h));
  241. }
  242.  
  243. void kirajz(struct aknamezo * akna){
  244.     int idxA, idxB;
  245.     for(idxA = 0; idxA < akna->h; idxA++){
  246.         for(idxB = 0; idxB < akna->w; idxB++){
  247.             printf("%d", akna->pm[idxA][idxB]);
  248.         }
  249.         printf("\n");
  250.     }
  251. }
  252.  
  253.  
  254. int jatek(struct aknamezo * akna){
  255.     struct irany ir;
  256.     struct irany poz;
  257.     int lepes = 0;
  258.     do{
  259.     printf("Honnan szeretnel kezdeni? (NULLATOL INDEXELUNK)\nSOR:");
  260.     scanf("%d", &poz.y);
  261.     printf("OSZLOP:");
  262.         scanf("%d", &poz.x);
  263.     }while(!(poz.y >= 0 && poz.y < akna->h && poz.x >= 0 && poz.x < akna->w) && akna->pm[poz.y][poz.x] != 1);
  264.     while(1){
  265.         kirajz(akna);
  266.         iranyk(&ir, poz, akna);
  267.         if(akna->pm[poz.y + ir.y][poz.x + ir.x] == 1){
  268.             return lepes;
  269.         } else {
  270.             lepes++;
  271.             poz.y = poz.y + ir.y;
  272.             poz.x = poz.x + ir.x;
  273.             printf("\nSikeres lepes! (%d,%d)\n", poz.y, poz.x);
  274.         }
  275.     }
  276.     return lepes;
  277. }
  278.  
  279. int main(void){
  280.     setbuf(stdout, 0);
  281.     struct aknamezo akna;
  282.     beolvas(&akna, "akna.txt");
  283.     int l = jatek(&akna);
  284.     printf("A jatek veget ert... Kezdestol megtett lepesek szama: %d", l);
  285.     torol(&akna);
  286.     return 0;
  287. }
  288.  
  289. */
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313. /*#include <stdio.h>
  314. #include <stdlib.h>
  315. #include <string.h>
  316.  
  317. struct elem{
  318.     char nev[31];
  319.     int ear;
  320.     int db;
  321. };
  322.  
  323. int sorok(char* fn){
  324.     int retval = 1;
  325.     FILE * fl = fopen(fn, "r");
  326.     char buf;
  327.     while(!feof(fl)){
  328.         if(fread(&buf, sizeof(char), 1, fl) && buf == '\n')retval++;
  329.     }
  330.     fclose(fl);
  331.     printf("%d", retval);
  332.     return retval;
  333. }
  334.  
  335. void torol(struct elem ** praktar){
  336.     if(*praktar != NULL){
  337.         free(*praktar);
  338.         *praktar = NULL;
  339.     }
  340. }
  341.  
  342. void foglal(struct elem ** praktar, int x){
  343.     *praktar = (struct elem*)malloc(sizeof(struct elem)*x);
  344. }
  345.  
  346. int beolvas(struct elem ** praktar){
  347.     torol(praktar);
  348.     char fn[65];
  349.     printf("File neve: ");
  350.     scanf("%s", fn);
  351.     int sr = sorok(fn);
  352.     foglal(praktar, sr);
  353.     FILE * fl = fopen(fn, "r");
  354.     int idxA;
  355.     for(idxA = 0; idxA < sr; idxA++){
  356.         fscanf(fl, "%s", (*praktar+idxA)->nev);
  357.         fscanf(fl, "%d", &(*praktar+idxA)->ear);
  358.         fscanf(fl, "%d", &(*praktar+idxA)->db);
  359.     }
  360.     fclose(fl);
  361.     return sr;
  362. }
  363.  
  364. void kiir(struct elem * raktar, int sorok){
  365.     if(raktar == NULL){
  366.             printf("Nincs mit kiirni, a lista üres...");
  367.         } else {
  368.         int idxA;
  369.         printf("A lista:\n");
  370.         for(idxA = 0; idxA < sorok; idxA++){
  371.             printf("Nev: %s - E.ar: %d - Darab: %d\n", (raktar+idxA)->nev, (raktar+idxA)->ear, (raktar+idxA)->db);
  372.         }
  373.     }
  374. }
  375.  
  376. void keres(struct elem * raktar, int sr){
  377.     if(raktar == NULL){
  378.         printf("Nincs mit keresni, a lista üres...");
  379.         return;
  380.     }
  381.     char nev[31];
  382.     printf("Mire szeretnel rakeresni?");
  383.     scanf("%s", nev);
  384.  
  385.     int idxA;
  386.     for(idxA = 0; idxA < sr && strcmp(nev, raktar[idxA].nev); idxA++);
  387.     if(idxA == sr){
  388.         printf("Nincs ilyen...\n");
  389.     } else {
  390.         printf("Nev: %s - E.ar: %d - Darab: %d\n", (raktar+idxA)->nev, (raktar+idxA)->ear, (raktar+idxA)->db);
  391.     }
  392.     //printf("%d", strcmp(nev, raktar[idxA].nev));
  393.  
  394. }
  395.  
  396. int minput(){
  397.     printf("Valassz a menupontok kozul:\n");
  398.     printf("1. Lista betoltese\n2. Kereses\n3. Listazas\n4. Kilepes");
  399.     int o=-1;
  400.     scanf("%d", &o);
  401.     return o;
  402. }
  403.  
  404. int main(void) {
  405.     setbuf(stdout, 0);
  406.     struct elem * raktar = NULL;
  407.     int sr = -1;
  408.     int o = -1;
  409.     while(o != 4){
  410.         switch((o = minput())){
  411.             case 1:
  412.                 sr = beolvas(&raktar);
  413.             break;
  414.             case 2:
  415.                 keres(raktar, sr);
  416.             break;
  417.             case 3:
  418.                 kiir(raktar, sr);
  419.             break;
  420.             case 4:
  421.                 torol(&raktar);
  422.                 printf("A program kilep... A memoria fellelegzik\n");
  423.             break;
  424.             default:
  425.                 printf("Hibas bemenet!\n");
  426.             break;
  427.         }
  428.     }
  429.  
  430.     return EXIT_SUCCESS;
  431. }
  432. */
  433. /*
  434.  
  435. #include <stdio.h>
  436. #include <stdlib.h>
  437.  
  438. struct cikk{
  439.     char nev[61];
  440.     int vonalkod;
  441. };
  442.  
  443. struct raktar{
  444.     char nev[61];
  445.     int darab;
  446.     struct cikk cikkek[200];
  447. };
  448.  
  449. void beker_rn(char * pNev){
  450.     printf("Raktar neve: ");
  451.     scanf("%s", pNev);
  452. }
  453.  
  454. void beker_cikk(struct cikk * cikk){
  455.     printf("\nCikk neve: ");
  456.     scanf("%s", cikk->nev);
  457.  
  458.     printf("Cikk vonalkodja: ");
  459.     scanf("%d", &cikk->vonalkod);
  460. }
  461.  
  462. void beker_cikkek(struct cikk * cikkek, int db){
  463.     int i;
  464.     for(i = 0; i<db;i++){
  465.         beker_cikk(&cikkek[i]);
  466.     }
  467. }
  468.  
  469. void beker(struct raktar * ptrRaktar){
  470.     beker_rn(ptrRaktar->nev);
  471.     beker_cikkek(ptrRaktar->cikkek, ptrRaktar->darab);
  472. }
  473.  
  474. void kiir_nev(char * nev){
  475.     printf("\n%s raktar cikkei:\n", nev);
  476. }
  477.  
  478. void kiir_cikkek(struct cikk * cikkek, int db){
  479.     int i;
  480.     for(i=0;i<db;i++){
  481.         printf("Cikk neve: %s\n", cikkek[i].nev);
  482.         printf("Cikk vonalkodja: %d \n--\n", cikkek[i].vonalkod);
  483.     }
  484. }
  485.  
  486. void kiir(struct raktar * ptrRaktar){
  487.     kiir_nev(ptrRaktar->nev);
  488.     kiir_cikkek(ptrRaktar->cikkek, ptrRaktar->darab);
  489. }
  490.  
  491. void mennyi(struct raktar * raktar){
  492.     printf("Hany cikket szeretnel beolvasni?");
  493.     scanf("%d", &raktar->darab);
  494. }
  495.  
  496. int main(void){
  497.     setbuf(stdout, 0);
  498.     struct raktar raktar;
  499.     mennyi(&raktar);
  500.     beker(&raktar);
  501.     kiir(&raktar);
  502.     return 0;
  503. }
  504.  
  505. //##@##Q9YJLA@5752ef6f2f86657bf0b80fba9b3a238d
  506. */
Add Comment
Please, Sign In to add comment