Procentowe wystepowanie liter w tekscie

0

Witam, jak moge wyliczyć procent kazdej z liter w tekscie?

mój kod to

#include <stdio.h>
main()
{
char znak, litera;
int i, j, k = 0;
int tab[25];
FILE *plik;
plik = fopen("2002.txt", "r");

if (plik==NULL) {
          printf("Nie udalo sie otworzyc pliku");
  
   }else
   printf("Plik otwarty pomyslnie!\n");

//zerowaie zawartosci tablicy   
for (j=0; j<26; j++)
 {
  tab[j]=0;
  } 


//zliczanie liter i zapisywanie wyników do tablicy 
while (!feof(plik))
{   
 fscanf(plik, "%c", &znak);
 for (i=0; i<26; i++)
  {  
   litera = i+97;
   k=0;
   if (znak == litera) tab[i]++;
  }  
}


//wyswietlanie ilosci liter 
for (j=0; j<26; j++)
 {
  printf("%c = %d\n", j+97, tab[j]);
 }
 getchar();
fclose(plik);
return 0;


getchar();
}
0

I w czym masz problem?

0

Nie mam pojęcia jak w ogóle zabrac sie za wyliczenie procentów dla każdej poszczególnej litery. np "a" 20razy ,35% z wszystkich liter w texcie(wczytanym) i tak każda litera.;] wyświetlone wszystkie w kolumni.

0
  1. trzeba zliczać litery
  2. idealnym rozwiązaniem jest zaalokowanie 256 elementowej tablicy char, wyzerowaniu jej i używaniu wczytywanych liter jako indeksów w celu zwiększenia licznika dla danej litery

Później już łatwo.

0

Bez przesady z ta 256 elementowa tablica... W zwyklym tekscie wystepuja przeciez tylko litery, cyfry i troche znakow, wiec nie ma potrzeby deklarowac tablicy dla nieuzywanych znakow(znakow specjalnych). Przy dlugim tekscie tablica charow moze nie wystarczy i licznik sie przekreci.

0

Oczywiście, że można mniejszą, ale nie chciałem zaciemniać sprawy z innymi znakami.
Char można zamienić na int, nie ma problemu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1