Facebook
From Jittery Meerkat, 3 Months ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 162
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct student
  5. {
  6.         char nazwisko[30];
  7.         char imie[20];
  8.         int numer;
  9.         double oceny[5];
  10.         double sr;
  11. };
  12.  
  13. void dopisz();
  14. void drukuj(struct student);
  15. void drukuj_plik();
  16. struct student srednia(struct student);
  17.  
  18. main()
  19. {
  20.         int znak;
  21.         while(1)
  22.         {
  23.         printf("\tMenu\n");
  24.         printf("d - dopisz element\n");
  25.         printf("w - drukuj plik\n");
  26.         printf("q - wyjdz\n");
  27.         znak = getchar();
  28.         switch (znak)
  29.                 {
  30.                 case 'd' :      dopisz();
  31.                                         break;
  32.                 case 'w' :      drukuj_plik();
  33.                                         break;
  34.                 case 'q' :      return 0;
  35.                 default  :      printf("Bledny znak!\n");
  36.                 }
  37.         fflush(stdin);
  38.         }
  39. }
  40.  
  41.  
  42.  
  43. void dopisz()
  44. {
  45.         FILE *plik;
  46.         struct student add;
  47.         int i;
  48.  
  49.         plik = fopen("dane.bin","ab");
  50.         if (plik == NULL) printf("Plik nie istnieje\n");
  51.         else
  52.         {
  53.                 printf("Podaj nazwisko\n"); fflush(stdin); scanf("%29s",         add.nazwisko);        
  54.                 printf("Podaj imie\n");         fflush(stdin); scanf("%19s",     add.imie);
  55.                 printf("Podaj numer\n");        fflush(stdin); scanf("%d",              &add.numer);
  56.                 printf("Podaj oceny [5]\n");   
  57.                         for(i=0; i<5; i++)
  58.                         {
  59.                                 fflush(stdin);
  60.                                 scanf("%lg",    &add.oceny[i]);
  61.                                 printf("%g\n",   add.oceny[i]);
  62.                         }
  63.                 add=srednia(add);
  64.                 fwrite(&add, sizeof(struct student), 1, plik);
  65.                 fclose(plik);
  66.         }
  67.        
  68. }
  69.  
  70. void drukuj(struct student print)
  71. {
  72.         int i;
  73.  
  74.         printf("Nazwisko:\t%s\n",       print.nazwisko);
  75.         printf("Imie:\t\t%s\n",         print.imie);
  76.         printf("Numer:\t\t%d\n",        print.numer);
  77.         printf("Oceny:\t\t");
  78.         for (i=0; i<5; i++) printf("%g, ", print.oceny[i]);
  79.         printf("\nSrednia:\t%g\n",print.sr);
  80. }
  81.  
  82. void drukuj_plik()
  83. {
  84.         int i=1;
  85.         struct student druk;
  86.         FILE *plik;
  87.  
  88.         plik = fopen("dane.bin", "rb");
  89.         if (plik == NULL) printf("Plik nie istnieje\n");
  90.         else
  91.         {
  92.                         while(feof(plik)==0)
  93.                         {      
  94.                                 fseek(plik, (i-1)*sizeof(struct student), SEEK_SET);
  95.                                 fread(&druk, sizeof(struct student), 1, plik);
  96.                                 drukuj(druk);
  97.                                 i++;
  98.                         }
  99.                         fclose(plik);
  100.         }
  101. }
  102.  
  103. struct student srednia(struct student sred)
  104. {
  105.         int i;
  106.         double s=0;
  107.  
  108.         for(i=0; i<5; i++) s+=sred.oceny[i];
  109.         sred.sr=s/5;
  110.  
  111.         return sred;
  112. }