Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5.  
  6. typedef struct Datum{
  7.     int ev, honap, nap;
  8. } Datum;
  9. typedef struct Foglalas{
  10.     char cegnev[20];
  11.     Datum esemeny_nap;
  12.     int kezdo_ora, veg_ora;
  13. } Foglalas;
  14.  
  15.  
  16. void uj_fogl(Foglalas *foglalasok, int *db);
  17. void eddigi_kiir(Foglalas *foglalasok, int *db);
  18. void fajlba_tarolas(Foglalas *foglalasok, int *db);
  19. int fomenu(){
  20.     int szam;
  21.     int kilep;
  22.     do{
  23.         kilep=1;
  24.         printf("Kerem, a megfelelo billentyu es egy enter megnyomasaval valassza ki, hogy az alabbi harom lehetoseg kozul melyiket valasztja!\n");
  25.         printf("1. Uj foglalas\n");
  26.         printf("2. Eddigi foglalasok kiirasa\n");
  27.         printf("3. Foglalasok eltarolasa fajlban\n");
  28.         printf("4. Vege\n");
  29.         scanf("%d", &szam);
  30.         if((szam>=1) && (szam<=4)){
  31.             return szam;
  32.         }
  33.         else{
  34.             printf("Ilyen lehetoseg nincs!\n");
  35.             kilep=0;
  36.             break;
  37.         }
  38.     }
  39.      while(kilep==0);
  40. }
  41.    
  42.  
  43. int azonos_datum(Datum dt1, Datum dt2){
  44.     if ((dt1.ev==dt2.ev) && (dt1.honap==dt2.honap) && (dt1.nap==dt2.nap)){
  45.         return 1;
  46.     } else {
  47.         return 0;
  48.     }
  49. }
  50.  
  51.  
  52. int szokoev_e(int ev){
  53.     if (ev%4==0) {
  54.         if (ev%100==0){
  55.             if (ev%400==0) {
  56.                 return 1;
  57.             }else {
  58.                 return 0;
  59.             }  
  60.         }else {
  61.             return 1;
  62.         }
  63.     }else {
  64.         return 0;
  65.     }
  66. }
  67.  
  68.    
  69. int datum_letezik(Datum dt){
  70.     switch(dt.honap){
  71.         case 1:
  72.          if((dt.nap<=0) || (dt.nap>=32)){
  73.                 return 0;
  74.             }
  75.             else{
  76.                 return 1;
  77.             }
  78.         break;
  79.         case 2:
  80.             if ((dt.nap<=0) || ((szokoev_e(dt.ev)==0) && (dt.nap>=29)) || ((szokoev_e(dt.ev)==1) && (dt.nap>=30))){
  81.                 return 0;
  82.             }
  83.             else{
  84.                 return 1;
  85.             }
  86.         break;
  87.         case 3:
  88.             if((dt.nap<=0) || (dt.nap>=32)){
  89.                 return 0;
  90.             }
  91.             else{
  92.                 return 1;
  93.             }
  94.         break;
  95.         case 4:
  96.             if((dt.nap<=0) || (dt.nap>=31)){
  97.                 return 0;
  98.             }
  99.             else{
  100.                 return 1;
  101.             }
  102.         break;
  103.         case 5:
  104.             if((dt.nap<=0) || (dt.nap>=32)){
  105.                 return 0;
  106.             }
  107.             else{
  108.                 return 1;
  109.             }
  110.         break;
  111.         case 6:
  112.             if((dt.nap<=0) || (dt.nap>=31)){
  113.                 return 0;
  114.             }
  115.             else{
  116.                 return 1;
  117.             }
  118.         break;
  119.         case 7:
  120.             if((dt.nap<=0) || (dt.nap>=32)){
  121.                 return 0;
  122.             }
  123.             else{
  124.                 return 1;
  125.             }
  126.         break;
  127.         case 8:
  128.             if((dt.nap<=0) || (dt.nap>=32)){
  129.                 return 0;
  130.             }
  131.             else{
  132.                 return 1;
  133.             }
  134.         break;
  135.         case 9:
  136.             if((dt.nap<=0) || (dt.nap>=31)){
  137.                 return 0;
  138.             }
  139.             else{
  140.                 return 1;
  141.             }
  142.         break;
  143.         case 10:
  144.             if((dt.nap<=0) || (dt.nap>=32)){
  145.                 return 0;
  146.             }
  147.             else{
  148.                 return 1;
  149.             }
  150.         break;
  151.         case 11:
  152.             if((dt.nap<=0) || (dt.nap>=31)){
  153.                 return 0;
  154.             }
  155.             else{
  156.                 return 1;
  157.             }
  158.         break;
  159.         case 12:
  160.             if((dt.nap<=0) || (dt.nap>=32)){
  161.                 return 0;
  162.             }
  163.             else{
  164.                 return 1;
  165.         }
  166.         break;
  167.         default: return 0;break;
  168.         }  
  169. }
  170.  
  171.  
  172. int idopont_jo_e( int a, int b ){
  173.     if((a<0) ||(b<0) || (a>24) || (b>24) || (b<=a)){
  174.         return 0;
  175.     } else {
  176.         return 1;
  177.     }
  178. }
  179.  
  180.  
  181. int datum_kisebb(Datum dt1, Datum dt2){
  182.     if((dt1.ev<dt2.ev) || ((dt1.ev==dt2.ev) && (dt1.honap<dt2.honap)) || ((dt1.ev==dt2.ev) && (dt1.honap==dt2.honap) && (dt1.nap<dt2.nap))){
  183.         return 1;
  184.     } else {
  185.         if((dt1.ev==dt2.ev) && (dt1.honap==dt2.honap) && (dt1.nap==dt2.nap)){
  186.             return -1;
  187.         } else {
  188.             return 2;
  189.         }
  190.     }
  191. }
  192.  
  193.  
  194. void uj_fogl(Foglalas *foglalasok, int *db){
  195.     int j,k,l;
  196.     Datum dt;
  197.     char cn[21];
  198.     int ko, vo;
  199.    
  200.     printf("Kerem, adja meg a foglalo ceg nevet (maximum 20 karakter, ekezetek nelkul)!\n");
  201.     scanf(" %s", cn);
  202.     printf("Kerem, adja meg a foglalas datumat ( ev, honap, nap; mindegyik egesz szam, szokozokkel elvalasztva)!\n");
  203.     scanf("%d %d %d",&dt.ev, &dt.honap, &dt.nap );
  204.     printf("Kerem adja meg a foglalas kezdo- es vegidopontjat (ket egesz szam 0 es 24 kozott, szokozzel elvalasztva)!\n");
  205.     scanf("%d %d", &ko, &vo);
  206.     if ((datum_letezik(dt)==1) && (idopont_jo_e(ko, vo)==1)){
  207.         if(*db==0){
  208.             strcpy(foglalasok[*db].cegnev,cn);
  209.             foglalasok[*db].esemeny_nap=dt;
  210.             foglalasok[*db].kezdo_ora=ko;
  211.             foglalasok[*db].veg_ora=vo;
  212.        
  213.             *db++;
  214.         }
  215.         else{
  216.         j=0;
  217.         while(j<*db){
  218.             if((azonos_datum(foglalasok[j].esemeny_nap, dt)==1) && (((foglalasok[j].kezdo_ora<=ko) && (ko<foglalasok[j].veg_ora))||((foglalasok[j].kezdo_ora<vo) && (vo<=foglalasok[j].veg_ora))))
  219.             {
  220.                 printf("A terem az adott idointervallumon (vagy egy reszen) mar foglalt!\n");
  221.             break;
  222.             } else {
  223.                 j++;
  224.             }
  225.         }
  226.         if(j==*db){
  227.             k=0;
  228.             while(k<*db){
  229.                 if((datum_kisebb(foglalasok[k].esemeny_nap, dt)==1) || ((azonos_datum(foglalasok[k].esemeny_nap, dt)==1) && (foglalasok[k].kezdo_ora<=ko)))
  230.                 {
  231.                     k++;
  232.                 }
  233.                 else {
  234.                     break;
  235.                 }
  236.             }
  237.                     l=*db;
  238.                     while(l>k){
  239.                         foglalasok[l].esemeny_nap=foglalasok[l-1].esemeny_nap;
  240.                         foglalasok[l].kezdo_ora=foglalasok[l-1].kezdo_ora;
  241.                         foglalasok[l].veg_ora=foglalasok[l-1].veg_ora;
  242.                         strcpy(foglalasok[l].cegnev,foglalasok[l-1].cegnev);
  243.                         l--;
  244.                     }
  245.                     foglalasok[k].esemeny_nap=dt;
  246.                     foglalasok[k].kezdo_ora=ko;
  247.                     foglalasok[k].veg_ora=vo;
  248.                     strcpy(foglalasok[k].cegnev,cn);
  249.                     *db++;
  250.         }
  251.     }
  252. }  
  253.     else {
  254.         if (datum_letezik(dt)==0){
  255.             printf("A megadott datum nem letezik!\n");
  256.         } else {
  257.             printf("A megadott idointervallum nem letezik!\n");
  258.         }
  259.         }      
  260. printf("\n \n");
  261.     }
  262.  
  263.  
  264. void datum_atir(Datum dt){
  265.     switch(dt.honap){
  266.         case 1: printf("%d. januar %d. ", dt.ev, dt.nap);break;
  267.         case 2: printf("%d. februar %d. ", dt.ev, dt.nap);break;
  268.         case 3: printf("%d. marcius %d. ", dt.ev, dt.nap);break;
  269.         case 4: printf("%d. aprilis %d. ", dt.ev, dt.nap);break;
  270.         case 5: printf("%d. majus %d. ", dt.ev, dt.nap);break;
  271.         case 6: printf("%d. junius %d. ", dt.ev, dt.nap);break;
  272.         case 7: printf("%d. julius %d. ", dt.ev, dt.nap);break;
  273.         case 8: printf("%d. augusztus %d. ", dt.ev, dt.nap);break;
  274.         case 9: printf("%d. szeptember %d. ", dt.ev, dt.nap);break;
  275.         case 10: printf("%d. oktober %d. ", dt.ev, dt.nap);break;
  276.         case 11: printf("%d. november %d. ", dt.ev, dt.nap);break;
  277.         case 12: printf("%d. december %d. ", dt.ev, dt.nap);break;
  278.         default: break;
  279.        
  280.     }  
  281. }
  282.  
  283.  
  284. void eddigi_kiir(Foglalas *foglalasok, int *db){
  285.     int i;
  286.     printf("Az eddigi foglalasok: \n");
  287.     for (i=0;i<*db;i++){
  288.         printf("%s ", foglalasok[i].cegnev);
  289.         datum_atir(foglalasok[i].esemeny_nap);
  290.         printf("%d-%d\n", foglalasok[i].kezdo_ora, foglalasok[i].veg_ora);
  291.     }
  292. printf("\n \n");
  293. }
  294.  
  295.  
  296. void fajlba_tarolas(Foglalas *foglalasok, int *db){
  297.     int i;
  298.     FILE *irat;
  299.     irat=fopen("foglalasok.txt", "w");
  300.     fprintf(irat, "%d\n", *db);
  301.     for(i=0; i<*db; i++){
  302.         fprintf(irat, "%s \n", foglalasok[i].cegnev);
  303.         fprintf(irat, "%d %d %d\n", foglalasok[i].esemeny_nap.ev, foglalasok[i].esemeny_nap.honap, foglalasok[i].esemeny_nap.nap);
  304.         fprintf(irat, "%d %d\n", foglalasok[i].kezdo_ora, foglalasok[i].veg_ora);
  305.     }
  306.     fclose(irat);
  307. }
  308.  
  309.  
  310. int main (){
  311. Foglalas *foglalasok;
  312. foglalasok=malloc(100*sizeof(Foglalas));
  313. FILE *be;
  314. be=fopen("foglalasok.txt", "r");
  315. int i, valasztas;
  316. int db=0;
  317. if(be!=NULL){
  318.     fscanf(be, "%d", &db);
  319.     for (i=0; i<db; i++){
  320.         fscanf(be, " %s", foglalasok[i].cegnev);
  321.         fscanf(be, "%d %d %d", &foglalasok[i].esemeny_nap.ev, &foglalasok[i].esemeny_nap.honap, &foglalasok[i].esemeny_nap.nap);
  322.         fscanf(be, "%d %d", &foglalasok[i].kezdo_ora, &foglalasok[i]. veg_ora);
  323.         }
  324.     fclose(be);
  325. }
  326. do{
  327.     valasztas=fomenu();
  328.     switch(valasztas){
  329.         case 1:uj_fogl(foglalasok, &db);break;
  330.         case 2:eddigi_kiir(foglalasok, &db);break;
  331.         case 3:fajlba_tarolas(foglalasok, &db);break;
  332.         case 4:break;
  333.         default:break;
  334.     }
  335. } while(valasztas!=4);
  336. system("PAUSE");
  337. free(foglalasok);
  338. return 0;
  339. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement