Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define X 11
- #define K 7
- #define D 85
- struct Obiekt_noclegowy {
- char* miasto;
- char* kategoria;
- char nazwa[D];
- int cena;
- struct Obiekt_noclegowy *nast;
- };
- typedef struct Obiekt_noclegowy OBIEKT_NOCLEGOWY;
- typedef OBIEKT_NOCLEGOWY *ADRES;
- ADRES pierwszy = NULL, ostatni = NULL, pom;
- char* WczytywanieMiasta (char tablica_miast[][D], char nazwa_miasta[D])
- {
- int m;
- for (m = 0; m < (X-1); ++m)
- {
- if (((strcmp(tablica_miast[m], "")) == 0) || ((strcmp(tablica_miast[m], nazwa_miasta)) == 0))
- break;
- }
- strcpy(tablica_miast[m], nazwa_miasta);
- return tablica_miast[m];
- }
- char* WczytywanieKategorii (char tablica_kategorii[][D], char nazwa_kategorii[D])
- {
- int k;
- for (k = 0; k < (K-1); ++k)
- {
- if (((strcmp(tablica_kategorii[k], "")) == 0) || ((strcmp(tablica_kategorii[k], nazwa_kategorii)) == 0))
- break;
- }
- strcpy(tablica_kategorii[k], nazwa_kategorii);
- return tablica_kategorii[k];
- }
- void WypisanieTablicyMiast (char tablica_miast[][D])
- {
- int i = 1;
- int m = 0;
- while ((strcmp(tablica_miast[m], "")) != 0)
- {
- printf("%d. %s\n", i, tablica_miast[m]);
- ++i;
- ++m;
- }
- printf("\n");
- }
- void WypisanieTablicyKategorii (char tablica_kategorii[][D])
- {
- char j = 'a';
- int k = 0;
- while ((strcmp(tablica_kategorii[k], "") != 0))
- {
- printf("%c) %s\n", j, tablica_kategorii[k]);
- ++j;
- ++k;
- }
- printf("\n");
- }
- void KategorieIObiekty (char tablica_miast[][D], ADRES pierwszy)
- {
- int m = 0;
- int k = 0;
- ADRES pom;
- char rozpoznane_kategorie[K][D];
- while ((strcmp(tablica_miast, "")) != 0)
- {
- pom = pierwszy;
- for (; k < K; ++k)
- memset(rozpoznane_kategorie[k], 0, sizeof(rozpoznane_kategorie[k]));
- while (pom != NULL)
- {
- if ((strcmp(tablica_miast[m], (pom->miasto))) == 0)
- {
- WczytywanieKategorii(rozpoznane_kategorie, (pom->kategoria));
- }
- pom = pom->nast;
- }
- int i;
- printf("\nMiasto %s:\n", tablica_miast[m]);
- for (i = 0; i < K; ++i)
- {
- if ((strcmp(rozpoznane_kategorie[i], "") == 0))
- break;
- printf("\nKategoria %s\n", rozpoznane_kategorie[i]);
- WypiszObiekty(tablica_miast[m], rozpoznane_kategorie[i], pierwszy);
- }
- ++m;
- }
- }
- void WypiszObiekty (char* szukane_miasto, char* szukana_kategoria, ADRES pierwszy)
- {
- ADRES pom;
- for (pom = pierwszy; pom != NULL; pom = pom->nast)
- {
- if ((strcmp(szukane_miasto, (pom->miasto)) != 0))
- continue;
- if ((strcmp(szukana_kategoria, (pom->kategoria) != 0)))
- continue;
- printf("%s\n", (pom->nazwa));
- }
- }
- int main()
- {
- char wiersz[256];
- char miasta[X][D];
- char kategorie[K][D];
- char nowe_miasto[D];
- char nowa_kategoria[D];
- int m;
- for (m = 0; m < X; ++m)
- memset(miasta[m], 0, sizeof(miasta[m]));
- int k;
- for (k = 0; k < K; ++k)
- memset(kategorie[k], 0, sizeof(kategorie[k]));
- FILE *dane;
- if ((dane = fopen("Plik.txt", "rt")) == NULL)
- {
- printf("Blad odczytu pliku.\n");
- return 1;
- }
- else
- {
- while ((fgets(wiersz, sizeof(wiersz), dane)) != NULL)
- {
- pom = (ADRES)malloc(sizeof(OBIEKT_NOCLEGOWY));
- sscanf(wiersz, "%s %s %s %d", nowe_miasto, nowa_kategoria, pom->nazwa, &pom->cena);
- pom->miasto = WczytywanieMiasta(miasta, nowe_miasto);
- pom->kategoria = WczytywanieKategorii(kategorie, nowa_kategoria);
- if (pierwszy == NULL)
- {
- pierwszy = pom;
- ostatni = pom;
- }
- else
- {
- ostatni->nast = pom;
- ostatni = pom;
- }
- pom->nast = NULL;
- }
- fclose(dane);
- }
- char rozpoznane_kategorie[K][D];
- KategorieIObiekty(miasta, pierwszy);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement