Code:
for (i = 0; i < brSlova; frekv[i++] = 0);
Niz frekv sluzi za pamcenje broja pojavljivanja pojedinacno svakog znaka abecede. U ovom delu koda sve elemente postavljam na nulu jer, naravno, odatle krece brojanje.
Code:
while (!feof(file))
Funkcija feof() je upotrebljena kao indikator kraja fajla, vraca nenultu vrednost ako procita kod EOF (End Of File), odnosno nulu u suprotnom. Kao argument uzima pokazivac na FILE.
Prevedeno na srpski ova linija zvuci kao: "Dok nije kraj fajla"
Code:
if (slovo(&c))
Ako je procitani znak slovo onda sledi:
Code:
frekv[c-pomeraj]++;
Simbol 'a' ima ASCII kod 97, tako da njegovim oduzimanjem sa vrednoscu varijable pomeraj (tj. brojem 97) dobijamo 0 koja nam sluzi za indeksiranje niza, sto znaci da ce slovo 'b' imati index 98-97 = 1, slovo 'c' 99-97 = 2 i tako redom..
Ovaj deo koda nam sluzi za brojanje pojavljivanja znakova.
Code:
int slovo(char* a)
Funkcija slovo() kao argument uzima pokazivac na tip char, to sam koristio da bih u slucaju potrebe mogao izmeniti stvarni podatak.
Code:
if (isalpha(*a))
Ako je sadrzaj pokazivaca a (odnosno ucitani znak c) slovo:
Code:
if (isupper(*a))
Da li je sadrzaj pokazivaca a (odnosno ucitani znak c) veliko slovo?
Code:
*a = tolower(*a);
U slucaju da jeste, pomocu funkcije tolower() pretvara se u malo.
Code:
return 1;
Ako je prvi uslov (isalpha(*a)) ispunjen, povratna vrednost je logicka istina (1), u suprotnom funkcija vraca logicku neistinu (0) i vrednost odgovarajuceg elementa niza frekv se NE inkrementira.
Nadam se da ce biti jasnije, ako nesto nije jasno slobodno pitaj