Advertisement
wojtas626

[C] Struct, union

Dec 5th, 2014
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.84 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <string.h>
  5.  
  6. enum kolor { CZARNY, BIALY, CZERWONY, ZIELONY, NIEBIESKI, ROZOWY,
  7.              SREBRNY, SZARY, FIOLETOWY, ZOLTY, POMARANCZOWY
  8.            };
  9.  
  10. void wypiszKolor(int x)
  11. {
  12.     switch(x)
  13.     {
  14.     case CZARNY:
  15.         printf("czarny\n");
  16.         break;
  17.     case BIALY:
  18.         printf("bialy\n");
  19.         break;
  20.     case CZERWONY:
  21.         printf("czerwony\n");
  22.         break;
  23.     case NIEBIESKI:
  24.         printf("niebieski\n");
  25.         break;
  26.     case ZIELONY:
  27.         printf("zielony\n");
  28.         break;
  29.     case ROZOWY:
  30.         printf("rozowy\n");
  31.         break;
  32.     case SREBRNY:
  33.         printf("srebrny\n");
  34.         break;
  35.     case SZARY:
  36.         printf("szary\n");
  37.         break;
  38.     case FIOLETOWY:
  39.         printf("fioletowy\n");
  40.         break;
  41.     case ZOLTY:
  42.         printf("zolty\n");
  43.         break;
  44.     case POMARANCZOWY:
  45.         printf("pomaranczowy\n");
  46.         break;
  47.     }
  48. }
  49.  
  50. enum naped { BENZYNA, DIESEL, HYBRYDA, ELEKTRYCZNY };
  51.  
  52. void wypiszNaped(int x)
  53. {
  54.     switch(x)
  55.     {
  56.     case BENZYNA:
  57.         printf("benzyna\n");
  58.         break;
  59.     case DIESEL:
  60.         printf("diesel\n");
  61.         break;
  62.     case HYBRYDA:
  63.         printf("hybryda\n");
  64.         break;
  65.     case ELEKTRYCZNY:
  66.         printf("elektryczny\n");
  67.         break;
  68.     }
  69. }
  70.  
  71. struct osobowy
  72. {
  73.     char *marka;
  74.     enum kolor kolorOsobowy;
  75.     int liczbaDrzwi;
  76.     enum naped napedOsobowy;
  77.     int cena;
  78.     struct tm terminy[10];
  79. };
  80.  
  81. void wypiszOsobowy(struct osobowy *x)
  82. {
  83.     printf("Marka: %s\n", x->marka);
  84.     printf("Naped: ");
  85.     wypiszNaped(x->napedOsobowy);
  86.     printf("Liczba drzwi: %d\n", x->liczbaDrzwi);
  87.     printf("Kolor: ");
  88.     wypiszKolor(x->kolorOsobowy);
  89.     printf("Cena: %d\n", x->cena);
  90.     printf("Terminy przegladow:\n");
  91.     int i;
  92.     for (i = 0; i< 10; i++)
  93.     {
  94.         printf("%d.%d.%d\n", x->terminy[i].tm_mday, x->terminy[i].tm_mon, x->terminy[i].tm_year);
  95.     }
  96. }
  97.  
  98. struct ciezarowy
  99. {
  100.     char *marka;
  101.     int ladownosc;
  102.     int liczbaOsi;
  103.     int dlugosc;
  104.     int cena;
  105.     struct tm terminy[10];
  106. };
  107.  
  108. void wypiszCiezarowy(struct ciezarowy *x)
  109. {
  110.     printf("Marka: %s\n", x->marka);
  111.     printf("Dlugosc: %dm\n", x->dlugosc);
  112.     printf("Ladownosc: %dt\n", x->ladownosc);
  113.     printf("Liczba osi: %d\n", x->liczbaOsi);
  114.     printf("Cena: %d\n", x->cena);
  115.     int i;
  116.     for (i = 0; i< 10; i++)
  117.     {
  118.         printf("%d.%d.%d\n", x->terminy[i].tm_mday, x->terminy[i].tm_mon, x->terminy[i].tm_year);
  119.     }
  120. }
  121.  
  122. struct autobus
  123. {
  124.     char *marka;
  125.     int liczbaMiejscSiedzacych;
  126.     int dlugosc;
  127.     int cena;
  128.     struct tm terminy[10];
  129. };
  130.  
  131. void wypiszAutobus(struct autobus *x)
  132. {
  133.     printf("Marka: %s\n", x->marka);
  134.     printf("Dlugosc: %dm\n", x->dlugosc);
  135.     printf("Liczba miejsc siedzacych: %d\n", x->liczbaMiejscSiedzacych);
  136.     printf("Cena: %d\n", x->cena);
  137.     int i;
  138.     for (i = 0; i< 10; i++)
  139.     {
  140.         printf("%d.%d.%d\n", x->terminy[i].tm_mday, x->terminy[i].tm_mon, x->terminy[i].tm_year);
  141.     }
  142. }
  143.  
  144. union Pojazd
  145. {
  146.     struct osobowy osobowy;
  147.     struct ciezarowy ciezarowy;
  148.     struct autobus autobus;
  149. };
  150.  
  151. int main(void)
  152. {
  153.     int i;
  154.     struct osobowy LamborghiniGallardo;
  155.     LamborghiniGallardo.marka = "Lamborghini";
  156.     LamborghiniGallardo.napedOsobowy = BENZYNA;
  157.     LamborghiniGallardo.liczbaDrzwi = 3;
  158.     LamborghiniGallardo.kolorOsobowy = BIALY;
  159.     LamborghiniGallardo.cena = 950000;
  160.  
  161.     for (i = 0; i< 10; i++)
  162.     {
  163.         LamborghiniGallardo.terminy[i].tm_year = 2014 + i;
  164.         LamborghiniGallardo.terminy[i].tm_mon = 6;
  165.         LamborghiniGallardo.terminy[i].tm_mday = 20;
  166.     }
  167.  
  168.  
  169.     struct ciezarowy MAN;
  170.     MAN.cena = 800000;
  171.     MAN.dlugosc = 15;
  172.     MAN.ladownosc = 20;
  173.     MAN.liczbaOsi = 9;
  174.     MAN.marka = "MAN";
  175.  
  176.     for (i = 0; i< 10; i++)
  177.     {
  178.         MAN.terminy[i].tm_year = 2013 + 2 * i;
  179.         MAN.terminy[i].tm_mon = 4;
  180.         MAN.terminy[i].tm_mday = 27;
  181.     }
  182.  
  183.     struct autobus Solaris;
  184.     Solaris.marka = "Solaris";
  185.     Solaris.cena = 600000;
  186.     Solaris.dlugosc = 20;
  187.     Solaris.liczbaMiejscSiedzacych = 90;
  188.  
  189.     for (i = 0; i< 10; i++)
  190.     {
  191.         Solaris.terminy[i].tm_year = 2011 + i;
  192.         Solaris.terminy[i].tm_mon = 1;
  193.         Solaris.terminy[i].tm_mday = 17;
  194.     }
  195.  
  196.     struct ciezarowy scania[2];
  197.     int j;
  198.     for(j = 0; j < 2; j++)
  199.     {
  200.         scania[j].cena = 800000 + j * 100000;
  201.         scania[j].dlugosc = 15 - 2 * j;
  202.         scania[j].ladownosc = 20 + 3 * j;
  203.         scania[j].liczbaOsi = 9;
  204.         scania[j].marka = "Scania";
  205.  
  206.         for (i = 0; i< 10; i++)
  207.         {
  208.             scania[j].terminy[i].tm_year = 2009 + 2 * i + j;
  209.             scania[j].terminy[i].tm_mon = 11 - j;
  210.             scania[j].terminy[i].tm_mday = 22 + j;
  211.         }
  212.     }
  213.  
  214.  
  215.     wypiszOsobowy(&LamborghiniGallardo);
  216.     printf("\n");
  217.     wypiszCiezarowy(&MAN);
  218.     printf("\n");
  219.     wypiszAutobus(&Solaris);
  220.     printf("\n");
  221.  
  222.     for (i = 0; i < 2; i++)
  223.     {
  224.         wypiszCiezarowy(&scania[i]);
  225.         printf("\n");
  226.     }
  227.  
  228.     union Pojazd pojazd;
  229.     char *typ;
  230.     int number;
  231.  
  232.     do
  233.     {
  234.         printf("Wprowadz numer typu (osobowy=1, ciezarowy=2, autobus=3):\n");
  235.         scanf("%d", &number);
  236.     }
  237.     while(!(number == 1 || number == 2 || number == 3));
  238.  
  239.     switch(number)
  240.     {
  241.     case 1:
  242.         printf("Wprowadz marke: ");
  243.         scanf("%s", &pojazd.osobowy.marka);
  244.         printf("Wprowadz naped (benzyna=0, diesel=1, hybryda=2, elektryczny=3): ");
  245.         scanf("%d", &pojazd.osobowy.napedOsobowy);
  246.         printf("Wprowadz liczbe drzwi: ");
  247.         scanf("%d", &pojazd.osobowy.liczbaDrzwi);
  248.         printf("Wprowadz kolor (CZARNY=0, BIALY=1, CZERWONY=2, ZIELONY=3, NIEBIESKI=4, ROZOWY=5,SREBRNY=6, SZARY=7, FIOLETOWY=8, ZOLTY=9, POMARANCZOWY=10): ");
  249.         scanf("%d", &pojazd.osobowy.kolorOsobowy);
  250.         printf("Wprowadz cene: ");
  251.         scanf("%d", &pojazd.osobowy.cena);
  252.         break;
  253.     case 2:
  254.         printf("Wprowadz marke: ");
  255.         scanf("%s", &pojazd.ciezarowy.marka);
  256.         printf("Wprowadz liczbe osi: ): ");
  257.         scanf("%d", &pojazd.ciezarowy.liczbaOsi);
  258.         printf("Wprowadz dlugosc: ");
  259.         scanf("%d", &pojazd.ciezarowy.dlugosc);
  260.         printf("Wprowadz ladownosc: ");
  261.         scanf("%d", &pojazd.ciezarowy.ladownosc);
  262.         printf("Wprowadz cene: ");
  263.         scanf("%d", &pojazd.ciezarowy.cena);
  264.         break;
  265.     case 3:
  266.         printf("Wprowadz marke: ");
  267.         scanf("%s", &pojazd.autobus.marka);
  268.         printf("Wprowadz liczbe miejsc siedzacych: ");
  269.         scanf("%d", &pojazd.autobus.liczbaMiejscSiedzacych);
  270.         printf("Wprowadz dlugosc: ");
  271.         scanf("%d", &pojazd.autobus.dlugosc);
  272.         printf("Wprowadz cene: ");
  273.         scanf("%d", &pojazd.autobus.cena);
  274.         break;
  275.     }
  276.  
  277.     return 0;
  278. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement