Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- int m = 1303;
- //int m = 13030;
- //int m = 7024;
- int h(int k){
- return k%m;
- }
- int h2(int k){
- return (1+k%(m-2))%m;
- }
- int naINT(char slowo[]){
- int stala = 2, dlugosc = strlen(slowo);
- long long int wynik=slowo[0];
- if (dlugosc>1)
- for(int i=1; i<dlugosc; i++){
- wynik+=wynik*stala+slowo[i];
- if (wynik<0)
- return 0; // nie działa
- }
- return wynik;
- }
- int H(int k, int i){
- return (h(k)+h2(k)*i)%m;
- }
- struct pole{
- int liczba;
- char nazwisko[];
- };
- int main(void) {
- struct pole T[m];
- for (int i=0; i<m; i++)
- T[i].liczba=0;
- int licznik;
- double srednia = 0;
- int ilosc = m/2;//50%
- //int ilosc = 7*m/10;//70%
- //int ilosc = 9*m/10;//90%
- char *s;
- size_t len = 0;
- ssize_t read;
- FILE *plik;
- plik = fopen("37.txt", "r");
- for (int i = 0; i<ilosc-2; i++){//sztuczne zapełnianie %
- //char nazw[20] = "Nowak";
- T[i].liczba=1;
- //for (int j=0; j<strlen(nazw); j++)
- //T[i].nazwisko[]="No";
- }
- for(int i=0; i<5*m/100; i++){
- read = getline(&s, &len, plik);
- //obliczenie miejsca do wstawienia
- //jeśli zajęte to ponowne obliczenie pozycji i licznik++
- //printf("%d ------ %d - %s",h(naINT(s)), licznik, s);
- if ((T[H(naINT(s),licznik)].liczba) != 0){
- licznik++;
- }
- else{
- srednia+=licznik;
- licznik = 0;
- }
- }
- srednia = srednia/((5*m)/100);
- for (int i=0; i<m; i++){
- //printf("%d ", T[i].liczba);
- }
- fclose(plik);
- printf("%.5f\n", srednia);//tablica 1-0
- return 0;
- }
- #include <stdio.h>
- #include <string.h>
- int m = 1303;
- int h(int k){
- return k%m;
- }
- int naINT(char slowo[]){
- int stala = 2, dlugosc = strlen(slowo);
- long long int wynik=slowo[0];
- if (dlugosc>1)
- for(int i=1; i<dlugosc; i++){
- wynik+=wynik*stala+slowo[i];
- if (wynik<0)
- return 0; // nie działa
- }
- return wynik;
- }
- int main(void) {
- int T[m], ileZer = 0, max = 0, licznik = 0;
- double srednia = 0;
- char *s;
- size_t len = 0;
- ssize_t read;
- char slowo[]={"Similarly"};
- for (int i=0; i<m; i++)
- T[i]=0;
- FILE *plik;
- plik = fopen("3700.txt", "r");
- while ((read = getline(&s, &len, plik)) != -1) {
- //printf("%s - %d\n", s, naINT(s));
- T[h(naINT(s))]++;
- }
- for(int i=0; i<m; i++){
- if (T[i]==0)
- ileZer++;
- else{
- srednia+=T[i];
- licznik++;
- if (T[i]>max)
- max = T[i];
- }
- }
- srednia = srednia/licznik;
- fclose(plik);
- printf("Zerowych pozycji: %d\nMaksymalna ilosc: %d\nSrednia: %.3f", ileZer, max, srednia);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement