Advertisement
Guest User

struktury

a guest
Feb 20th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.83 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdbool.h>
  3.  
  4. #define MAXGR 100
  5.  
  6. typedef struct
  7. {
  8.     char imie[20];
  9.     char nazwisko[20];
  10.     unsigned int rok_studiow;
  11.     unsigned int nr_indeksu;
  12. } TDaneStudenta;
  13.  
  14. void wczytajDaneStudenta(TDaneStudenta*);
  15.  
  16. void promujStudenta(TDaneStudenta*, int lstud);
  17. void promocja(TDaneStudenta*);
  18.  
  19. void pokazdaneGrupy(TDaneStudenta*, int lstud);
  20. void pokazDaneStudenta(TDaneStudenta);
  21.  
  22. int main()
  23. {
  24.     int lstud = 0;
  25.     TDaneStudenta grupa[MAXGR];
  26.     int opcja;
  27.     do
  28.     {
  29.         printf("Wybierz opcje:\n1- dodaj studenta\n2- promuj studenta\n3- wyswietl dane grupy\n4- wyjscie\n");
  30.         scanf("%d",&opcja);
  31.         switch (opcja)
  32.         {
  33.             case 1:
  34.                 if (lstud < MAXGR)
  35.                 {
  36.                     wczytajDaneStudenta(&grupa[lstud]);
  37.                     lstud++;
  38.                 } else
  39.                     printf("Brak miejsc w grupie\n");
  40.                 break;
  41.             case 2:
  42.                 promujStudenta(grupa, lstud);
  43.                 break;                
  44.             case 3:
  45.                 pokazdaneGrupy(grupa, lstud);
  46.                 break;                
  47.         }
  48.     } while (opcja!=4);
  49.     return 0;
  50. }
  51.  
  52. void pokazDaneStudenta(TDaneStudenta a)
  53. {
  54.     printf("%20s|%20s|%10i|%3i\n", a.imie, a.nazwisko, a.nr_indeksu, a.rok_studiow);
  55. }
  56.  
  57. void promocja(TDaneStudenta *a)
  58. {
  59.     a->rok_studiow++;
  60.     printf("Promocja studenta %s %s (indeks: %i) na %i rok\n", a->imie, a->nazwisko, a->nr_indeksu, a->rok_studiow);
  61. }
  62.  
  63. void wczytajDaneStudenta(TDaneStudenta *student)
  64. {
  65.     printf("Podaj imie: ");
  66.     scanf("%19s", student->imie);    
  67.     printf("Podaj nazwisko: ");
  68.     scanf("%19s", student->nazwisko);    
  69.     //nie ma zabezpieczenia przed zdublowaniem numeru indeksu
  70.     printf("Podaj numer indeksu: ");
  71.     scanf("%d", &student->nr_indeksu);    
  72.     student->rok_studiow = 1;
  73. }
  74.  
  75. void pokazdaneGrupy(TDaneStudenta *grupa, int lstud)
  76. {
  77.     printf("--------------------------------------------------------\n");
  78.     printf("        Dane grupy\n");
  79.     printf("Liczba studentow: %d\n", lstud);
  80.     printf("Lista studentow: \n");    
  81.     printf("%20s|%20s|%10s|%3s\n","Imie", "Nazwisko", "Indeks", "Rok");    
  82.     int x;
  83.     for (x=0; x<lstud; x++)
  84.         pokazDaneStudenta(grupa[x]);
  85.     printf("--------------------------------------------------------\n");
  86. }
  87.  
  88. void promujStudenta(TDaneStudenta *grupa, int lstud)
  89. {
  90.     int nind;
  91.     printf("Podaj numer indeksu: ");
  92.     scanf("%i",&nind);
  93.    
  94.     int x;
  95.     bool jest = false;
  96.     //promowani wszyscy o takim samym numerze indeksu
  97.     for (x=0; x<lstud; x++)
  98.         if ((*(grupa+x)).nr_indeksu==nind)
  99.         {
  100.             promocja(grupa+x);        
  101.             jest = true;
  102.         }
  103.     if (!jest)
  104.         printf("Brak studenta o podanym numerze indeksu!!!\n");
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement