Форум программистов, компьютерный форум CyberForum.ru

Получить 10 наиболее часто встречающихся букв и число их появления из текстового файла - C++

Восстановить пароль Регистрация
 
sashagamer
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 12
30.05.2010, 14:34     Получить 10 наиболее часто встречающихся букв и число их появления из текстового файла #1
Дан символьный файл f, содержащий произвольный текст. Получить 10 наиболее часто встречающихся букв и число их появления.
помогите плиз, т.к. у самого не получается...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2010, 14:34     Получить 10 наиболее часто встречающихся букв и число их появления из текстового файла
Посмотрите здесь:

C++ Найти количество элементов, наиболее часто встречающихся в массиве
C++ 20 наиболее часто встречающихся слов
C++ Дан непустой массив из цифр. Вывести на экран цифру наиболее часто встречающихся в этом массиве.
Поиск наиболее часто встречающихся слов в файле C++
Получить 10 наиболее часто встречающихся слов из файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
30.05.2010, 19:34     Получить 10 наиболее часто встречающихся букв и число их появления из текстового файла #2
надо создать массив целых чисел, количество элементов равно количеству букв в алфавите, в мен будем хранить частоты появления символов. далее читаем файл по одному символу. число =(считанный символ - 'a') будет индексом для элемента массива, который мы увеличим на 1. например считали букву 'f', ('f' - 'a')==5, берем пятый элемент и увеличиваем его на один. таким образом мы посчитаем количество вхождений для каждой буквы. код_буквы = индекс_элемента + int('a');
теперь ищем наибольший элемент выводим на экран соответствующую букву, обнуляем элемент и так десять раз.

или можно объявить структуру с двумя полями - одно для буквы, другое для количества её вхождений. сделать массив таких структур. затем надо будет его инициализировать - всем полям - буквам придать значение. потом все тоже самое - по букве считываем из файла в структуре с соответствующей буквой увеличиваем число её вхождений. после чтения файла отсортировать массив по убыванию и взять первые десять элементов.
OVERPOWER8
 Аватар для OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
31.05.2010, 16:49     Получить 10 наиболее часто встречающихся букв и число их появления из текстового файла #3
Мой вариант задания:

имя файла надо указать в 23 строке. Программа не чувствительна к регистру.
C++
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
 
// 26 letters
char letters[] = "abcdefghijklmnopqrstuvwxyz";
 
struct bukva
{
    char sign;
    int qnt;
};
 
bool compare(bukva A, bukva B)
{
    return A.qnt > B.qnt;
}
 
int main()
{
    const char* filename = "input.txt";
    ifstream iFile(filename);       if(!iFile)  return -1;
    
    vector <bukva> array(26);
    for(int i=0; i<26; i++)
    {
        array[i].sign = i+97;
        array[i].qnt = 0;
    }
    
    int number;     char c;
    while(!iFile.eof())
    {
        c = iFile.get();
        if(isalpha(c))
        {
            c = tolower(c);
            number = c - 97;
            array[number].qnt++;
        }
    }
    
    iFile.close();
    sort(array.begin(), array.end(), compare);
    
    for(int i=0; i<10; i++)
        cout << array[i].sign << " " << array[i].qnt << endl;
    
    cout << endl;
    return 0;
}
Пример файла input.txt
Bash
1
2
3
qVgfUyPJWXrSAVCnINJZmaHHvFLeeYIwBqkkfgzlndc
dVmMNZmGTYnCRWOgWowDWfWAAnZMoBIvadwsstFIEGXVDLSzikQ
YgsdQQHwYCQZyObnejKtFNEPTmXWEDZJMIWLbAZdzvKkdiApDMgojRhqGqjcgQHwlgYoDTiNnN
sashagamer
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 12
01.06.2010, 20:38  [ТС]     Получить 10 наиболее часто встречающихся букв и число их появления из текстового файла #4
OVERPOWER8, она не хочет работать)

Добавлено через 22 часа 35 минут
*мне на С надо...
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
01.06.2010, 22:18     Получить 10 наиболее часто встречающихся букв и число их появления из текстового файла #5
думаю, что ход решения задачи ясен, осталось только выявить учаски кода, не пригодного для Си и перепесать их. Например в Си нет простаранств имен, поэтому деректива using namespace std; не нужна. ifstream - файловых потоков нет, надо использовать библиотеку stdio.h, в ней есть функции для работы с файлами. vector нету, в место него надо обьявить массив и т.д.
sashagamer
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 12
02.06.2010, 10:03  [ТС]     Получить 10 наиболее часто встречающихся букв и число их появления из текстового файла #6
Aye Aye, ок, спс
Yandex
Объявления
02.06.2010, 10:03     Получить 10 наиболее часто встречающихся букв и число их появления из текстового файла
Ответ Создать тему
Опции темы

Текущее время: 16:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru