Advertisement
Guest User

Untitled

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