Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. int m = 1303;
  4. //int m = 13030;
  5. //int m = 7024;
  6. int h(int k){
  7. return k%m;
  8. }
  9. int h2(int k){
  10. return (1+k%(m-2))%m;
  11. }
  12.  
  13. int naINT(char slowo[]){
  14. int stala = 2, dlugosc = strlen(slowo);
  15. long long int wynik=slowo[0];
  16. if (dlugosc>1)
  17. for(int i=1; i<dlugosc; i++){
  18. wynik+=wynik*stala+slowo[i];
  19. if (wynik<0)
  20. return 0; // nie działa
  21. }
  22. return wynik;
  23. }
  24.  
  25. int H(int k, int i){
  26. return (h(k)+h2(k)*i)%m;
  27. }
  28.  
  29. struct pole{
  30. int liczba;
  31. char nazwisko[];
  32. };
  33.  
  34. int main(void) {
  35. struct pole T[m];
  36. for (int i=0; i<m; i++)
  37. T[i].liczba=0;
  38. int licznik;
  39. double srednia = 0;
  40. int ilosc = m/2;//50%
  41. //int ilosc = 7*m/10;//70%
  42. //int ilosc = 9*m/10;//90%
  43.  
  44. char *s;
  45. size_t len = 0;
  46. ssize_t read;
  47. FILE *plik;
  48. plik = fopen("37.txt", "r");
  49.  
  50. for (int i = 0; i<ilosc-2; i++){//sztuczne zapełnianie %
  51. //char nazw[20] = "Nowak";
  52. T[i].liczba=1;
  53. //for (int j=0; j<strlen(nazw); j++)
  54. //T[i].nazwisko[]="No";
  55. }
  56. for(int i=0; i<5*m/100; i++){
  57. read = getline(&s, &len, plik);
  58. //obliczenie miejsca do wstawienia
  59. //jeśli zajęte to ponowne obliczenie pozycji i licznik++
  60. //printf("%d ------ %d - %s",h(naINT(s)), licznik, s);
  61. if ((T[H(naINT(s),licznik)].liczba) != 0){
  62. licznik++;
  63. }
  64. else{
  65. srednia+=licznik;
  66. licznik = 0;
  67. }
  68. }
  69. srednia = srednia/((5*m)/100);
  70. for (int i=0; i<m; i++){
  71. //printf("%d ", T[i].liczba);
  72. }
  73. fclose(plik);
  74. printf("%.5f\n", srednia);//tablica 1-0
  75. return 0;
  76. }
  77.  
  78. #include <stdio.h>
  79. #include <string.h>
  80. int m = 1303;
  81.  
  82. int h(int k){
  83. return k%m;
  84. }
  85.  
  86. int naINT(char slowo[]){
  87. int stala = 2, dlugosc = strlen(slowo);
  88. long long int wynik=slowo[0];
  89. if (dlugosc>1)
  90. for(int i=1; i<dlugosc; i++){
  91. wynik+=wynik*stala+slowo[i];
  92. if (wynik<0)
  93. return 0; // nie działa
  94. }
  95. return wynik;
  96. }
  97.  
  98. int main(void) {
  99. int T[m], ileZer = 0, max = 0, licznik = 0;
  100. double srednia = 0;
  101. char *s;
  102. size_t len = 0;
  103. ssize_t read;
  104. char slowo[]={"Similarly"};
  105. for (int i=0; i<m; i++)
  106. T[i]=0;
  107. FILE *plik;
  108. plik = fopen("3700.txt", "r");
  109. while ((read = getline(&s, &len, plik)) != -1) {
  110. //printf("%s - %d\n", s, naINT(s));
  111. T[h(naINT(s))]++;
  112. }
  113. for(int i=0; i<m; i++){
  114. if (T[i]==0)
  115. ileZer++;
  116. else{
  117. srednia+=T[i];
  118. licznik++;
  119. if (T[i]>max)
  120. max = T[i];
  121. }
  122. }
  123. srednia = srednia/licznik;
  124. fclose(plik);
  125. printf("Zerowych pozycji: %d\nMaksymalna ilosc: %d\nSrednia: %.3f", ileZer, max, srednia);
  126. return 0;
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement