Cześć, mam na jutro ogarnąć program obliczający entropie i dodatkowo wyświetlać różne statystyki m.in. prawdopodobieństwo wystąpienia liter w zdaniu itp. Mam problem gdyż po zliczeniu ile jest wystąpień danych liter w podanym zdaniu oprócz liter które faktycznie tam się znajdują w wyniku pokazuje mi dodatkowe dwie litery. Z czego może wynikać ten błąd?
Kod:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <conio.h>
#include <iomanip>
using namespace std;
int main() {
string tekst;
int licznik[6];
string nazwaPliku = "text.txt";
int iloscZnakow;
ifstream plik(nazwaPliku.c_str());
if(plik.is_open()){
while(plik.good()){
getline(plik, tekst);
}
}
for(int l = 0; l < tekst.length(); l++) {
if(tekst[l] != ' ') {
iloscZnakow++;
}
}
for(int i = 0; i < tekst.length(); i++) {
if(tekst[i] != ' ') {
licznik[tekst[i]]++;
}
}
cout << "Analizowany plik: " << nazwaPliku << endl << endl;
cout << "Alfabet wiadomosci: ";
for (int i = 97;i < 123; i ++){
if (licznik[i] != 0) {
cout << char(i) << " ";
}
}
cout << endl <<endl;
cout << "Ilosc wystapien znakow alfabetu w wiadomosci: " << endl;
for (int i = 97;i < 123; i ++){
if (licznik[i] != 0) {
cout << char(i) << " " << "(" << licznik[i] << ")" << " ";
}
}
cout << endl <<endl;
cout << "Prawdopodobienstwo wystapienia znaku: " << endl;
for (int i = 97;i < 123; i ++){
if (licznik[i] != 0) {
cout << char(i) << " " << "(" << setprecision(1) << (double)licznik[i]/(double)iloscZnakow << ")" << " ";
}
}
cout << endl <<endl;
cout << "Liczba znakow wiadomosci (wraz ze spacjami): " << tekst.length() << endl;
cin.ignore();
getchar();
getch();
system("pause");
return 0;
}