powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не считает частоту
9 сообщений из 9, страница 1 из 1
Не считает частоту
    #39288437
otars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно найти частоту встречаемости файла

В интернете нашёл формулу

(n / len) * 100.
где n - количество конкретного символа
len - длина строки

Выгружаю файл,считаю длину строки,а потом уже подсчитываю количество встречающихся символов и стараюсь применить выше указанную формулу но результата нету.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
void freq_symb()
{
	FILE *fd1=fopen("test1.txt","r");
	char str[255];
	int map[map_size] = {0};
	cout<<"Загрузка данных из файла..."<<endl;
	if (!fd1) 
       printf("Ошибка!Файл не найден!\n");
    else
	{	
		fgets(str,sizeof(str),fd1); 
printf(str); 
cout<<endl;
int l=strlen(str);
for(int i = 0; i < l; i++)
    {
        map[(unsigned char)str[i]]++;
    }
double frequency = 0.0;
    for(int i = 0; i < map_size; i++)
    {
		if(map[i])		
		{
        printf("'%c' => %d\n", (char)i, map[i]);
		frequency = (map[i]/l)*100;
		printf("'%c' => %d\n", (char)i, frequency);
		}
    }
	cout<<endl;
}
}



map[i] использую как переменную которая хранит количество встречающихся символов в строке.
...
Рейтинг: 0 / 0
Не считает частоту
    #39288456
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
otars,

У вас целочисленное деление на длину всегда дает 0, т.к. длина всегда больше числителя.
Умножайте сначала на 100, а потом делите на длину.
Ну либо приводите все к double перед делением.
...
Рейтинг: 0 / 0
Не считает частоту
    #39288461
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и обрабатывается только первая строка, а не весь файл, как заявлено.

Может еще какие-то баги есть, но через такое вырвиглазное форматирование лень читать.
...
Рейтинг: 0 / 0
Не считает частоту
    #39288562
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
int map[map_size] = {0};



Что такое map_size ?
Так не должно компилироваться.
...
Рейтинг: 0 / 0
Не считает частоту
    #39288598
otars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Код: plaintext
1.
int map[map_size] = {0};



Что такое map_size ?
Так не должно компилироваться.

Код: plaintext
1.
#define map_size 256



виноват забыл показать.
...
Рейтинг: 0 / 0
Не считает частоту
    #39288637
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyotars,

У вас целочисленное деление на длину всегда дает 0, т.к. длина всегда больше числителя.
Умножайте сначала на 100, а потом делите на длину.
Ну либо приводите все к double перед делением.

Здесь единственный выход приведение к любому из floating type, умножение на 100 не поможет. ex: (2*100)/1000=0


авторВ интернете нашёл формулу

(n / len) * 100.
где n - количество конкретного символа
len - длина строки

Анатолий, смотрите к чему мы идём, люди слушаются ваших советов и 'гуглят', 'ищут в интернете' :D Такими темпами скоро в интернете будут искать как складывать и вычитать
PS Это ни в коему случае не упрек вам, а в контексте удивления того, что на интуитивно понятные вещи, изучаемые в школе, ссылаются как на информацию полученную в сети
...
Рейтинг: 0 / 0
Не считает частоту
    #39288825
otars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SashaMercury,
странно я не помню чтобы формулу по получению частоты встречаемости символов проходили в школе.
...
Рейтинг: 0 / 0
Не считает частоту
    #39288831
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryЗдесь единственный выход приведение к любому из floating type, умножение на 100 не поможет. ex: (2*100)/1000=0
Ну, если точность нужна, то да, приводить к double
...
Рейтинг: 0 / 0
Не считает частоту
    #39288838
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
otarsя не помню чтобы формулу по получению частоты встречаемости символов проходили в школе.

Проценты. Второй класс начальной школы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не считает частоту
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]