Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct Nauczyciel
- {
- char nazwisko[30];
- struct Nauczyciel* nast;
- struct Zajecia* zajecia;
- };
- struct Zajecia
- {
- int godz_start;
- int min_start;
- char dzien_tyg[10];
- char grupa[10];
- char przedmiot[30];
- struct Zajecia* pop;
- struct Zajecia* nast;
- };
- int nr_dnia_tyg(char *dzien_tyg)
- {
- if (strcmp(dzien_tyg, 'pn')==0)
- return 1;
- if (strcmp(dzien_tyg, 'wt')==0)
- return 2;
- if (strcmp(dzien_tyg, 'sr')==0)
- return 3;
- if (strcmp(dzien_tyg, 'czw')==0)
- return 4;
- if (strcmp(dzien_tyg, 'pt')==0)
- return 5;
- if (strcmp(dzien_tyg, 'sb')==0)
- return 6;
- if (strcmp(dzien_tyg, 'nd')==0)
- return 7;
- return 0;
- }
- int porownywanie_zajec(struct Zajecia *zajecia1, struct Zajecia *zajecia2)
- {
- if(nr_dnia_tyg(zajecia1->dzien_tyg) > nr_dnia_tyg(zajecia2->dzien_tyg))
- return 1;
- if(nr_dnia_tyg(zajecia1->dzien_tyg) < nr_dnia_tyg(zajecia2->dzien_tyg))
- return -1;
- if(nr_dnia_tyg(zajecia1->dzien_tyg) == nr_dnia_tyg(zajecia2->dzien_tyg))
- {
- if(zajecia1->godz_start > zajecia2->godz_start)
- return 1;
- if(zajecia1->godz_start < zajecia2->godz_start)
- return -1;
- if(zajecia1->godz_start == zajecia2->godz_start)
- {
- if(zajecia1->min_start > zajecia2->min_start)
- return 1;
- if(zajecia1->min_start < zajecia2->min_start)
- return -1;
- if(zajecia1->min_start == zajecia2->min_start)
- return 0;
- }
- }
- return 2;
- }
- int main()
- {
- int godz_start,godz_stop, min_start, min_stop;
- char dzien_tyg[10];
- char grupa[10];
- char nazwisko[30];
- char przedmiot[30];
- int i;
- FILE *plik;
- if((plik = fopen("test.txt", "r"))==NULL)
- {
- printf("Nie udalo sie otworzyc pliku\n");
- }
- //struct Nauczyciel * nauczyciel1 = (struct Nauczyciel *)malloc(sizeof(struct Nauczyciel));
- //struct Zajecia * zajecia1 = (struct Zajecia *)malloc(sizeof(struct Zajecia));
- struct Nauczyciel * nauczyciel = NULL;
- struct Nauczyciel *pierwszy_nauczyciel= NULL;
- struct Zajecia *zajecia = NULL;
- struct Zajecia *ostatnie_zajecia = NULL;
- while(!feof(plik))
- {
- nauczyciel=NULL;
- fscanf(plik,"%d:%d-%d:%d %s %s %s %s",&godz_start,&min_start,&godz_stop,&min_stop, dzien_tyg, grupa, nazwisko, przedmiot );
- struct Nauczyciel * wsk = pierwszy_nauczyciel;
- // 1. sprawdzanie czy nauczyciel ju¿ istnieje
- while(wsk != NULL)
- {
- if (strcmp(wsk->nazwisko, nazwisko) == 0)
- {
- nauczyciel = wsk;
- break;
- }
- wsk = wsk->nast;
- }
- printf("po 1\n");
- // 2. je¿eli nauczyciela nie znale¿liœmy to tworzymy i dodajemy do listy nauczycieli
- if (nauczyciel == NULL)
- {
- nauczyciel = (struct Nauczyciel*)malloc(sizeof(struct Nauczyciel));
- strcpy(nauczyciel->nazwisko, nazwisko);
- nauczyciel->zajecia = NULL;
- nauczyciel->nast = pierwszy_nauczyciel;
- pierwszy_nauczyciel = nauczyciel;
- }
- printf("po 2\n");
- // 3. Tworzymy zajecia
- zajecia = (struct Zajecia *)malloc(sizeof(struct Zajecia));
- zajecia->godz_start=godz_start;
- zajecia->min_start=min_start;
- strcpy(zajecia->dzien_tyg, dzien_tyg);
- strcpy(zajecia->grupa, grupa);
- strcpy(zajecia->przedmiot, przedmiot);
- zajecia->pop = NULL;
- zajecia->nast = NULL;
- printf("po 3\n");
- // 4. Dodajemy zajecia na poczatek listy zajec nauczyciela
- if (nauczyciel->zajecia == NULL)
- {
- nauczyciel->zajecia = zajecia;
- printf("po 4.1\n");
- } else if(porownywanie_zajec(nauczyciel->zajecia, zajecia) == -1)
- {printf("po 4.2\n");
- zajecia->nast = nauczyciel->zajecia;
- nauczyciel->zajecia->pop = zajecia;
- nauczyciel->zajecia = zajecia;
- } else
- {
- struct Zajecia * wsk = nauczyciel->zajecia;
- while(wsk != NULL)
- {
- if(porownywanie_zajec(nauczyciel->zajecia, wsk) == -1)
- {
- wsk->pop = zajecia;
- zajecia->nast = wsk;
- break;
- printf("po 4.3\n");
- }
- if (wsk->nast == NULL)
- {
- wsk->nast = zajecia;
- zajecia->pop = wsk;
- break;
- }
- wsk = wsk->nast;
- }
- }
- }
- printf("po 4\n");
- char tekst[] = "Kowalski";
- if(strcmp(nauczyciel->nazwisko, tekst) == 0)
- {
- struct Zajecia *temp = nauczyciel->zajecia;
- while(temp)
- {
- printf("%s - %d:%d %s %s\n", temp->dzien_tyg, temp->godz_start, temp->min_start, temp->grupa, temp->przedmiot);
- temp=temp->nast;
- }
- }
- //printf("%s - %d:%d %s %s\n", nauczyciel1->nazwisko, nauczyciel1->zajecia->godz_start, nauczyciel1->zajecia->min_start, nauczyciel1->zajecia->grupa, nauczyciel1->zajecia->przedmiot);
- FILE *plik_wyjsciowy;
- plik_wyjsciowy = fopen(strcat(nauczyciel->nazwisko, ".txt"), "w");
- fprintf("%s:\n%d:%d %s %s\n", nauczyciel->zajecia->dzien_tyg, nauczyciel->zajecia->godz_start, nauczyciel->zajecia->min_start, nauczyciel->zajecia->grupa, nauczyciel->zajecia->przedmiot);
- fclose(plik);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement