Advertisement
Guest User

Untitled

a guest
Jan 19th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.07 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define X 11
  6. #define K 7
  7. #define D 85
  8.  
  9. struct Obiekt_noclegowy {
  10.   char* miasto;
  11.   char* kategoria;
  12.   char nazwa[D];
  13.   int cena;
  14.   struct Obiekt_noclegowy *nast;
  15.  };
  16.  
  17.     void WypisanieTablicyMiast (char tab[][85])
  18.     {
  19.       int m = 0;
  20.       int n = 1;
  21.       while (strcmp(tab[m], "") != 0)
  22.       {
  23.              printf("%d. %s\n", n, tab[m]);
  24.              ++m;
  25.              ++n;
  26.       }
  27.       printf("\n");
  28.     }
  29.  
  30.     void WypisanieTablicyKategorii (char tab[][85])
  31.     {
  32.       int k = 'a';
  33.       char n = 0;
  34.       while (strcmp(tab[n], "") != 0)
  35.       {
  36.              printf("%c) %s\n", k, tab[n]);
  37.              ++k;
  38.              ++n;
  39.       }
  40.       printf("\n");
  41.     }
  42.  
  43. char* WczytywanieMiasta(char tablica[][D], char nazwa[D])
  44. {
  45.   int m = 0;
  46.   for (m = 0; m < (X-1); ++m)
  47.   {
  48.     if (strcmp(tablica[m], "") == 0)
  49.       break;
  50.  
  51.     if (strcmp(tablica[m], nazwa) == 0)
  52.       return tablica[m];
  53.   }
  54.  
  55.   strcpy(tablica[m], nazwa);
  56.   return tablica[m];
  57. }
  58.  
  59. char* WczytywanieKategorii(char tablica[][D], char nazwa[D])
  60. {
  61.   int k = 0;
  62.   for (k = 0; k < (K-1); ++k)
  63.   {
  64.     if (strcmp(tablica[k], "") == 0)
  65.       break;
  66.  
  67.     if (strcmp(tablica[k], nazwa) == 0)
  68.       return tablica[k];
  69.   }
  70.  
  71.   strcpy(tablica[k], nazwa);
  72.   return tablica[k];
  73. }
  74.  
  75.     char odwiedzoneKategorie[K][D];
  76.    
  77.     void WypiszLokale (char* szukaneMiasto, char* szukanaKategoria, struct Obiekt_noclegowy *pierwszy)
  78.     {
  79.         struct Obiekt_noclegowy *pom;
  80.         for (pom = pierwszy; pom != NULL; pom = pom->nast)
  81.         {
  82.             if (strcmp(szukaneMiasto, pom->miasto) != 0)
  83.             continue;
  84.  
  85.             if (strcmp(szukanaKategoria, pom->kategoria) != 0)
  86.             continue;
  87.  
  88.             printf("%s\n", pom->nazwa);
  89.          }
  90.     }
  91.  
  92.         void KategorieiLokale (char tab[][85], struct Obiekt_noclegowy *pierwszy)
  93.     {
  94.         int m = 0;
  95.         int k = 0;
  96.         struct Obiekt_noclegowy *pom;
  97.  
  98.         while (strcmp(tab[m], "") != 0)
  99.         {
  100.             pom = pierwszy;
  101.             for (k = 0; k < K; ++k)
  102.                 memset(odwiedzoneKategorie[k], 0, sizeof(odwiedzoneKategorie[k]));
  103.  
  104.             while (pom != NULL)
  105.             {
  106.                 if (strcmp(tab[m], pom->miasto) == 0)
  107.                 {
  108.                     WczytywanieKategorii(odwiedzoneKategorie, pom->kategoria);
  109.                 }
  110.                 pom = pom->nast;
  111.             }
  112.  
  113.             int i;
  114.             printf("\nMiasto %s:\n", tab[m]);
  115.            for (i = 0; i < K; ++i)
  116.                {
  117.              if (strcmp(odwiedzoneKategorie[i], "") == 0)
  118.                break;
  119.  
  120.              printf("\n Kategoria %s\n",odwiedzoneKategorie[i]);
  121.                WypiszLokale (tab[m], odwiedzoneKategorie[i], pierwszy);
  122.  
  123.            }
  124.            ++m;
  125.         }
  126.  
  127.     }
  128.  
  129. int main()
  130. {
  131.   char Wiersz[255];
  132.   typedef struct Obiekt_noclegowy OBIEKT_NOCLEGOWY;
  133.   typedef OBIEKT_NOCLEGOWY *ADRES;
  134.  
  135.   ADRES pierwszy = NULL, ostatni = NULL, pom;
  136.  
  137.   char miasta[X][D];
  138.   char kategorie[K][D];
  139.   char noweMiasto[D];
  140.   char nowaKategoria[D];
  141.  
  142.   int m;
  143.   for (m = 0; m < X; ++m)
  144.     memset(miasta[m], 0, sizeof(miasta[m]));
  145.  
  146.   int k;
  147.   for (k = 0; k < K; ++k)
  148.     memset(kategorie[k], 0, sizeof(kategorie[k]));
  149.  
  150.   FILE *dane;
  151.   if ((dane = fopen("ja.txt", "rt")) == NULL)
  152.   {
  153.       printf("Blad odczytu pliku.\n");
  154.       return 1;
  155.   }
  156.   else
  157.   {
  158.     while ((fgets(Wiersz, sizeof(Wiersz), dane)) != NULL)
  159.     {
  160.        pom = (ADRES)malloc(sizeof(OBIEKT_NOCLEGOWY));
  161.        sscanf(Wiersz, "%s %s %s %d", noweMiasto, nowaKategoria, pom->nazwa, &pom->cena);
  162.        pom->miasto = WczytywanieMiasta(miasta, noweMiasto);
  163.        pom->kategoria = WczytywanieKategorii(kategorie, nowaKategoria);
  164.  
  165.        pom->nast = NULL;
  166.  
  167.        if (pierwszy == NULL)
  168.        {
  169.            pierwszy = pom;
  170.            ostatni = pom;
  171.        }
  172.        else
  173.        {
  174.            ostatni->nast = pom;
  175.            ostatni = pom;
  176.        }
  177.     }
  178.   fclose(dane);
  179.   }
  180.  
  181.     KategorieiLokale(miasta, pierwszy);
  182.  
  183. return 0;
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement