Гистограмма частот встречаемости введенных символов решение на c++

Из текстового файла (английский текст) читаются все входящие символы. Найти частоту появления разных букв в английской речи, выдать в форме повернутой набок гистограммы.
Можно использовать только следующие классы и методы:
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;
}
гистограмма частотности с++ решение задачи введенных символов
гистограмма частотности с++ решение задачи введенных символов
Пожалуйста оцените качество материала

Помогая проекту BEST-EXAM, вы делаете образование более доступным для каждого человека, внесите и вы свой вклад -
поделитесь этой статьей в социальных сетях!

Читайте также:

Добавить комментарий

Ваш e-mail не будет опубликован.

стрелка вверх best-exam