Из текстового файла (английский текст) читаются все входящие символы. Найти частоту появления разных букв в английской речи, выдать в форме повернутой набок гистограммы.
Можно использовать только следующие классы и методы:
Class string;
Methods size,compare,erase,find, find_first_not_of, find_first_of
Template container vector
Methods size, begin, end, push_back, iterator
Template container list
Methods size, begin, end, push_back, insert, find, iterator
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
/*Из текстового файла (английский текст) читаются все входящие символы.
Найти частоту появления разных букв в английской речи, выдать в форме повернутой набок гистограммы.*/
int main()
{
fstream in("in.txt");
string text;
string tmp;
//считываю все содержимое файла в строку text
while(!in.eof())
{
getline(in,tmp);
text+=tmp;
}
int index;
string str("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
//Привожу все символы к верхнему регистру
for(size_t i(0);i<text.size();i++)
if(text[i]>='a' && text[i]<='z')text[i]=((text[i])-32);
//Вектор содержащий буквы от A до Z
vector<char> vct;
for(int i(0);i<26;++i)
vct.push_back(i+65);
//Вектор в котором будет содержаться частотность символов
vector<int> lst;
for(int i(0);i<26;++i)
lst.push_back(0);
size_t i(0);
//подсчитываем частоту символов
while(i<text.size())
{
index=text.find_first_of(str);
if(index!=string::npos)
{
lst[str.find(text[index])]++;
text.erase(text.begin()+index);
}
else i++;
}
int max=0;
//находим максимальную частоту
//(нужно для построения гистограммы)
for(size_t i(0);i<lst.size();i++)
if(lst[i]>max)max=lst[i];
//строим гистограмму
for(int i(0);i<26;++i)
{
cout<<vct[i]<<" "<<lst[i];
for(int k(0);k<(lst[i]*70)/max;k++)cout<<"|";
cout<<endl;
}
return 0;
}