Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct Datum{
- int ev, honap, nap;
- } Datum;
- typedef struct Foglalas{
- char cegnev[20];
- Datum esemeny_nap;
- int kezdo_ora, veg_ora;
- } Foglalas;
- void uj_fogl(Foglalas *foglalasok, int *db);
- void eddigi_kiir(Foglalas *foglalasok, int *db);
- void fajlba_tarolas(Foglalas *foglalasok, int *db);
- int fomenu(){
- int szam;
- int kilep;
- do{
- kilep=1;
- printf("Kerem, a megfelelo billentyu es egy enter megnyomasaval valassza ki, hogy az alabbi harom lehetoseg kozul melyiket valasztja!\n");
- printf("1. Uj foglalas\n");
- printf("2. Eddigi foglalasok kiirasa\n");
- printf("3. Foglalasok eltarolasa fajlban\n");
- printf("4. Vege\n");
- scanf("%d", &szam);
- if((szam>=1) && (szam<=4)){
- return szam;
- }
- else{
- printf("Ilyen lehetoseg nincs!\n");
- kilep=0;
- break;
- }
- }
- while(kilep==0);
- }
- int azonos_datum(Datum dt1, Datum dt2){
- if ((dt1.ev==dt2.ev) && (dt1.honap==dt2.honap) && (dt1.nap==dt2.nap)){
- return 1;
- } else {
- return 0;
- }
- }
- int szokoev_e(int ev){
- if (ev%4==0) {
- if (ev%100==0){
- if (ev%400==0) {
- return 1;
- }else {
- return 0;
- }
- }else {
- return 1;
- }
- }else {
- return 0;
- }
- }
- int datum_letezik(Datum dt){
- switch(dt.honap){
- case 1:
- if((dt.nap<=0) || (dt.nap>=32)){
- return 0;
- }
- else{
- return 1;
- }
- break;
- case 2:
- if ((dt.nap<=0) || ((szokoev_e(dt.ev)==0) && (dt.nap>=29)) || ((szokoev_e(dt.ev)==1) && (dt.nap>=30))){
- return 0;
- }
- else{
- return 1;
- }
- break;
- case 3:
- if((dt.nap<=0) || (dt.nap>=32)){
- return 0;
- }
- else{
- return 1;
- }
- break;
- case 4:
- if((dt.nap<=0) || (dt.nap>=31)){
- return 0;
- }
- else{
- return 1;
- }
- break;
- case 5:
- if((dt.nap<=0) || (dt.nap>=32)){
- return 0;
- }
- else{
- return 1;
- }
- break;
- case 6:
- if((dt.nap<=0) || (dt.nap>=31)){
- return 0;
- }
- else{
- return 1;
- }
- break;
- case 7:
- if((dt.nap<=0) || (dt.nap>=32)){
- return 0;
- }
- else{
- return 1;
- }
- break;
- case 8:
- if((dt.nap<=0) || (dt.nap>=32)){
- return 0;
- }
- else{
- return 1;
- }
- break;
- case 9:
- if((dt.nap<=0) || (dt.nap>=31)){
- return 0;
- }
- else{
- return 1;
- }
- break;
- case 10:
- if((dt.nap<=0) || (dt.nap>=32)){
- return 0;
- }
- else{
- return 1;
- }
- break;
- case 11:
- if((dt.nap<=0) || (dt.nap>=31)){
- return 0;
- }
- else{
- return 1;
- }
- break;
- case 12:
- if((dt.nap<=0) || (dt.nap>=32)){
- return 0;
- }
- else{
- return 1;
- }
- break;
- default: return 0;break;
- }
- }
- int idopont_jo_e( int a, int b ){
- if((a<0) ||(b<0) || (a>24) || (b>24) || (b<=a)){
- return 0;
- } else {
- return 1;
- }
- }
- int datum_kisebb(Datum dt1, Datum dt2){
- 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))){
- return 1;
- } else {
- if((dt1.ev==dt2.ev) && (dt1.honap==dt2.honap) && (dt1.nap==dt2.nap)){
- return -1;
- } else {
- return 2;
- }
- }
- }
- void uj_fogl(Foglalas *foglalasok, int *db){
- int j,k,l;
- Datum dt;
- char cn[21];
- int ko, vo;
- printf("Kerem, adja meg a foglalo ceg nevet (maximum 20 karakter, ekezetek nelkul)!\n");
- scanf(" %s", cn);
- printf("Kerem, adja meg a foglalas datumat ( ev, honap, nap; mindegyik egesz szam, szokozokkel elvalasztva)!\n");
- scanf("%d %d %d",&dt.ev, &dt.honap, &dt.nap );
- printf("Kerem adja meg a foglalas kezdo- es vegidopontjat (ket egesz szam 0 es 24 kozott, szokozzel elvalasztva)!\n");
- scanf("%d %d", &ko, &vo);
- if ((datum_letezik(dt)==1) && (idopont_jo_e(ko, vo)==1)){
- if(*db==0){
- strcpy(foglalasok[*db].cegnev,cn);
- foglalasok[*db].esemeny_nap=dt;
- foglalasok[*db].kezdo_ora=ko;
- foglalasok[*db].veg_ora=vo;
- *db++;
- }
- else{
- j=0;
- while(j<*db){
- 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))))
- {
- printf("A terem az adott idointervallumon (vagy egy reszen) mar foglalt!\n");
- break;
- } else {
- j++;
- }
- }
- if(j==*db){
- k=0;
- while(k<*db){
- if((datum_kisebb(foglalasok[k].esemeny_nap, dt)==1) || ((azonos_datum(foglalasok[k].esemeny_nap, dt)==1) && (foglalasok[k].kezdo_ora<=ko)))
- {
- k++;
- }
- else {
- break;
- }
- }
- l=*db;
- while(l>k){
- foglalasok[l].esemeny_nap=foglalasok[l-1].esemeny_nap;
- foglalasok[l].kezdo_ora=foglalasok[l-1].kezdo_ora;
- foglalasok[l].veg_ora=foglalasok[l-1].veg_ora;
- strcpy(foglalasok[l].cegnev,foglalasok[l-1].cegnev);
- l--;
- }
- foglalasok[k].esemeny_nap=dt;
- foglalasok[k].kezdo_ora=ko;
- foglalasok[k].veg_ora=vo;
- strcpy(foglalasok[k].cegnev,cn);
- *db++;
- }
- }
- }
- else {
- if (datum_letezik(dt)==0){
- printf("A megadott datum nem letezik!\n");
- } else {
- printf("A megadott idointervallum nem letezik!\n");
- }
- }
- printf("\n \n");
- }
- void datum_atir(Datum dt){
- switch(dt.honap){
- case 1: printf("%d. januar %d. ", dt.ev, dt.nap);break;
- case 2: printf("%d. februar %d. ", dt.ev, dt.nap);break;
- case 3: printf("%d. marcius %d. ", dt.ev, dt.nap);break;
- case 4: printf("%d. aprilis %d. ", dt.ev, dt.nap);break;
- case 5: printf("%d. majus %d. ", dt.ev, dt.nap);break;
- case 6: printf("%d. junius %d. ", dt.ev, dt.nap);break;
- case 7: printf("%d. julius %d. ", dt.ev, dt.nap);break;
- case 8: printf("%d. augusztus %d. ", dt.ev, dt.nap);break;
- case 9: printf("%d. szeptember %d. ", dt.ev, dt.nap);break;
- case 10: printf("%d. oktober %d. ", dt.ev, dt.nap);break;
- case 11: printf("%d. november %d. ", dt.ev, dt.nap);break;
- case 12: printf("%d. december %d. ", dt.ev, dt.nap);break;
- default: break;
- }
- }
- void eddigi_kiir(Foglalas *foglalasok, int *db){
- int i;
- printf("Az eddigi foglalasok: \n");
- for (i=0;i<*db;i++){
- printf("%s ", foglalasok[i].cegnev);
- datum_atir(foglalasok[i].esemeny_nap);
- printf("%d-%d\n", foglalasok[i].kezdo_ora, foglalasok[i].veg_ora);
- }
- printf("\n \n");
- }
- void fajlba_tarolas(Foglalas *foglalasok, int *db){
- int i;
- FILE *irat;
- irat=fopen("foglalasok.txt", "w");
- fprintf(irat, "%d\n", *db);
- for(i=0; i<*db; i++){
- fprintf(irat, "%s \n", foglalasok[i].cegnev);
- fprintf(irat, "%d %d %d\n", foglalasok[i].esemeny_nap.ev, foglalasok[i].esemeny_nap.honap, foglalasok[i].esemeny_nap.nap);
- fprintf(irat, "%d %d\n", foglalasok[i].kezdo_ora, foglalasok[i].veg_ora);
- }
- fclose(irat);
- }
- int main (){
- Foglalas *foglalasok;
- foglalasok=malloc(100*sizeof(Foglalas));
- FILE *be;
- be=fopen("foglalasok.txt", "r");
- int i, valasztas;
- int db=0;
- if(be!=NULL){
- fscanf(be, "%d", &db);
- for (i=0; i<db; i++){
- fscanf(be, " %s", foglalasok[i].cegnev);
- fscanf(be, "%d %d %d", &foglalasok[i].esemeny_nap.ev, &foglalasok[i].esemeny_nap.honap, &foglalasok[i].esemeny_nap.nap);
- fscanf(be, "%d %d", &foglalasok[i].kezdo_ora, &foglalasok[i]. veg_ora);
- }
- fclose(be);
- }
- do{
- valasztas=fomenu();
- switch(valasztas){
- case 1:uj_fogl(foglalasok, &db);break;
- case 2:eddigi_kiir(foglalasok, &db);break;
- case 3:fajlba_tarolas(foglalasok, &db);break;
- case 4:break;
- default:break;
- }
- } while(valasztas!=4);
- system("PAUSE");
- free(foglalasok);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement