Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 12
1

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

30.05.2010, 14:34. Показов 2463. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан символьный файл f, содержащий произвольный текст. Получить 10 наиболее часто встречающихся букв и число их появления.
помогите плиз, т.к. у самого не получается...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2010, 14:34
Ответы с готовыми решениями:

Дан символьный файл f, содержащий произвольный текст. Получить 10 наиболее часто встречающихся букв и число их появления
Дан символьный файл f, содержащий произвольный текст. Получить 10 наиболее часто встречающихся букв...

Получить 10 наиболее часто встречающихся букв и число их появления
Дан символьный файл f, содержащий произвольный текст. Получить 10 наиболее часто встречающихся букв...

Получить 10 наиболее часто встречающихся букв и число их появления
Дан символьный файл f, содержащий произвольный текст. Получить 10 наиболее часто встречающихся букв...

Дан символьный файл f, содержащий произвольный текст. Получить 10 наиболее часто встречающихся букв и число их появления
помогите, пожалуйста :'(

5
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
30.05.2010, 19:34 2
надо создать массив целых чисел, количество элементов равно количеству букв в алфавите, в мен будем хранить частоты появления символов. далее читаем файл по одному символу. число =(считанный символ - 'a') будет индексом для элемента массива, который мы увеличим на 1. например считали букву 'f', ('f' - 'a')==5, берем пятый элемент и увеличиваем его на один. таким образом мы посчитаем количество вхождений для каждой буквы. код_буквы = индекс_элемента + int('a');
теперь ищем наибольший элемент выводим на экран соответствующую букву, обнуляем элемент и так десять раз.

или можно объявить структуру с двумя полями - одно для буквы, другое для количества её вхождений. сделать массив таких структур. затем надо будет его инициализировать - всем полям - буквам придать значение. потом все тоже самое - по букве считываем из файла в структуре с соответствующей буквой увеличиваем число её вхождений. после чтения файла отсортировать массив по убыванию и взять первые десять элементов.
0
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224
31.05.2010, 16:49 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
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 12
01.06.2010, 20:38  [ТС] 4
OVERPOWER8, она не хочет работать)

Добавлено через 22 часа 35 минут
*мне на С надо...
0
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
01.06.2010, 22:18 5
думаю, что ход решения задачи ясен, осталось только выявить учаски кода, не пригодного для Си и перепесать их. Например в Си нет простаранств имен, поэтому деректива using namespace std; не нужна. ifstream - файловых потоков нет, надо использовать библиотеку stdio.h, в ней есть функции для работы с файлами. vector нету, в место него надо обьявить массив и т.д.
1
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 12
02.06.2010, 10:03  [ТС] 6
Aye Aye, ок, спс
0
02.06.2010, 10:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2010, 10:03
Помогаю со студенческими работами здесь

Получить 100 наиболее часто встречающихся слов файла и частоту их появления
Даны символьный файл f, содержащий произвольный текст длиной более 5000 слов. Слова в тексте...

Получить 10 наиболее часто встречающихся букв в файле
Дан символьный файл f, содержащий произвольный текст. Получить 10 наиболее часто встречающихся букв...

Получить 5 наиболее часто встречающихся слов и число их появлений
Добрый вечер не могли бы помочь написать программу на Turbo Delphi в консольном режиме. Заранее...

Получить 10 наиболее часто встречающихся слов и число их появлений
Помогите с задачей пожалуйста Дан текстовый файл f, содержащий произвольный текст. Слова в тексте...

Получить 10 наиболее часто встречающихся слов из файла
Дан символьный файл f, содержащий произвольный текст длиной более 50 слов. Слова в тексте разделены...

Получить 100 наиболее часто встречающихся слов и число их появлений
Дан символьный файл f, содержащий произвольный текст длиной более 5000 слов. Слова в тексте...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru