asiaczek24

Untitled

Feb 9th, 2021 (edited)
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.76 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define N 20
  5. /*Dany jest plik binarny o nazwie ”dane.dat” zawierający pewną liczbę rekordów typu tDane:
  6.  
  7. typedef struct{
  8. int id_towaru;
  9. float cena;
  10. int ilosc;} tDane;
  11.  
  12. Napisać funkcję, która wyznaczy średnią arytmetyczną cen towarów, których dane znajdują się w pliku ”dane.dat”.
  13.  
  14. 2.  Napisać funkcję, przepisującą z pliku ’dane.dat’ do tablicy jednowymiarowej A ilości tych towarów, których cena jest większa od ceny średniej (wyznaczonej
  15. w punkcie 1) – nie więcej, niż wynosi maksymalny rozmiar tablicy.
  16.  
  17. Podać deklaracje niezbędnych typów i zmiennych globalnych.*/
  18.  
  19. typedef struct
  20. {
  21.     int id_towaru;
  22.     float cena;
  23.     int ilosc;
  24. } tDane;
  25.  
  26. float srednia_a(char *nazwa_pliku);
  27. int wprowadz_dane(char *nazwa_pliku, int a[]);
  28.  
  29. int main()
  30. {
  31.     char *nazwa_pliku;
  32.     float sr;
  33.     int a[N];
  34.     nazwa_pliku="dane.dat";
  35.     printf("Srednia: %4.2f\n", srednia_a(nazwa_pliku));
  36.     printf("Ilosci towarow: %d", wprowadz_dane(nazwa_pliku, a));
  37.     return 0;
  38. }
  39.  
  40. float srednia_a(char *nazwa_pliku)
  41. {
  42.     FILE *plik;
  43.     tDane dane;
  44.     int k=0;
  45.     float sr=0;
  46.     plik=fopen(nazwa_pliku,"rb");
  47.     while(fread(&dane, sizeof dane,1,plik)!=0)
  48.     {
  49.         sr+=dane.cena;
  50.         k++;
  51.  
  52.     }
  53.     if(k>0)
  54.     {
  55.         sr/=k;
  56.     }
  57.     fclose(plik);
  58.     return sr;
  59. }
  60.  
  61. int wprowadz_dane(char *nazwa_pliku, int a[])
  62. {
  63.     FILE *plik;
  64.     int i;
  65.     float sr;
  66.     tDane dane;
  67.     plik = fopen(nazwa_pliku,"wb");
  68.     while(fread(&dane, sizeof dane,1,plik)!=0)
  69.     {
  70.         for (i=0; i<N; i++)
  71.         {
  72.             if(dane.cena>sr)
  73.             {
  74.                 dane.ilosc=a[N];
  75.             }
  76.         }
  77.         fclose(plik);
  78.         return 0;
  79.     }
  80. }
  81.  
Add Comment
Please, Sign In to add comment