Advertisement
Guest User

Untitled

a guest
Dec 6th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. #include <unistd.h>
  2. #include <fcntl.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <math.h>
  6. #include <limits.h>
  7.  
  8. double ObliczSrednia(const char *fname, int*min, int*max, char mode)
  9. {
  10. FILE* plik = fopen(fname, "r+" );
  11. int n;
  12. int suma = 0;
  13. double iloczyn = 1;
  14. double sumaHarmoniczna = 0;
  15. int i = 0;
  16. int j = 0;
  17. *min = INT_MAX;
  18. *max = 0; //bo operujemy tylko na dodatnich
  19. int napotkanoEOF = 0;
  20. while(!napotkanoEOF)
  21. {
  22. fscanf(plik, "%d\n", &n);
  23. if(feof(plik) != 0)
  24. {
  25. napotkanoEOF = 1;
  26. }
  27. if(*min > n) *min = n;
  28. if(*max < n) *max = n;
  29.  
  30. if(mode == 'A') suma += n;
  31. else if(mode == 'G') iloczyn *= n;
  32. else if(mode == 'H') sumaHarmoniczna += 1.0/n;
  33. i++;
  34. }
  35. fclose(plik);
  36. if(mode == 'A') return ((double)suma)/i;
  37. else if(mode == 'G') return pow(iloczyn, 1.0/i);
  38. else if(mode == 'H') return i/sumaHarmoniczna;
  39. }
  40.  
  41. int exists(const char *fname)
  42. {
  43. FILE *file;
  44. if ((file = fopen(fname, "r")))
  45. {
  46. fclose(file);
  47. return 1;
  48. }
  49. return 0;
  50. }
  51.  
  52. const char* fpName = "liczba3.txt";
  53.  
  54. int main()
  55. {
  56. printf("Wybierz opcje:\n a - napisz 5 liter do pliku\n b- modyfikuj wprowadzone\n");
  57. char chooseOption;
  58. scanf(" %c", &chooseOption);
  59. int i = 0;
  60. int liczbaDoZapisu;
  61. FILE* plik;
  62. switch (chooseOption)
  63. {
  64. case 'a':
  65. plik = fopen(fpName,"w+");
  66. //char *doZapisu;
  67. for(i = 0; i<5; i++)
  68. {
  69. scanf(" %d", &liczbaDoZapisu);
  70. fprintf(plik, "%d\n", liczbaDoZapisu);
  71. }
  72. fclose(plik);
  73. break;
  74. case 'b':
  75. if(!exists(fpName))
  76. {
  77. printf("Plik nie istnieje! Najpierw dopisz!\n");
  78. return 1;
  79. }
  80. break;
  81. default:
  82. printf("Bledne polecenie, elo\n");
  83. return 1;
  84. }
  85. printf("Wpisz A, G lub H\n");
  86. scanf(" %c", &chooseOption);
  87. plik = fopen(fpName, "w+r" );
  88. double srednia;
  89. int min,max;
  90. FILE *wynik;
  91. FILE *maxFp;
  92. FILE *minFp;
  93. wynik = fopen("wynik.txt", "w+");
  94. switch (chooseOption)
  95. {
  96. case 'A':
  97. srednia = ObliczSrednia(fpName, &min, &max, 'A');
  98. fprintf(wynik, "Srednia Arytmetyczna: %f", srednia);
  99. //printf("%f\n", srednia);
  100. break;
  101. case 'G':
  102. srednia = ObliczSrednia(fpName, &min, &max, 'G');
  103. fprintf(wynik, "Srednia Geometryczna: %f", srednia);
  104. //printf("%f\n", srednia);
  105. break;
  106. case 'H':
  107. srednia = ObliczSrednia(fpName, &min, &max, 'H');
  108. fprintf(wynik, "Srednia Harmoniczna: %f", srednia);
  109. //printf("%f\n", srednia);
  110. break;
  111. }
  112. minFp = fopen("najmniejsza.txt", "w+");
  113. maxFp = fopen("najwieksza.txt", "w+");
  114. fprintf(minFp, "%d", min);
  115. fprintf(maxFp, "%d", max);
  116. fclose(minFp);
  117. fclose(maxFp);
  118. fclose(wynik);
  119.  
  120. return 0;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement