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

Определить, какой символ чаще других встречается в данном файле. - C++

Восстановить пароль Регистрация
 
Universa1
0 / 0 / 0
Регистрация: 10.04.2013
Сообщений: 47
10.04.2013, 19:06     Определить, какой символ чаще других встречается в данном файле. #1
Помогите написать программу пожалуйста
Определить, какой символ чаще других встречается в данном файле.
желательно с описанием по подробнее

Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2013, 19:06     Определить, какой символ чаще других встречается в данном файле.
Посмотрите здесь:

Сколько раз какой символ встречается в файле C++
C++ 5. Дано натуральное число. Определить, какая цифра в этом числе встречается чаще других.
C++ Определить, какая буква чаще всего встречается в тексте, находящемся в заданном текстовом файле
C++ Массивы строк. Какой символ встречается в этой строке чаще всего?
C++ Определить, какой символ наиболее редко встречается в заданном массиве(шаблоны)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 928
Завершенные тесты: 1
10.04.2013, 19:30     Определить, какой символ чаще других встречается в данном файле. #2
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
#include <string>
#include <vector>
#include <fstream>
#include <iostream>
 
int main()
{
  int ancsii[256] = {}; //reserve all acsii table
 
  std::cout << "Enter full file name and press enter. For example C:\\MyDir\\MyFile.txt" << std::endl;
  std::string file;
  std::getline(std::cin, file); //read file name;
 
  std::fstream fs(file, std::fstream::in); //open file
  if (!fs.is_open()) //file wasn't finded or something else
    {
    std::cout << "Cann't open the file " << file << std::endl;
    return 0;  
    }
 
  for ( ;; )
    {
    int p = (int)fs.get();
    if (p == EOF)
      break;
 
    ancsii[p] += 1; //Mapping input char to our reserved table and increment its count;
    }
 
  int pos = 0;
  int max = ancsii[0];
  for (int i = 1; i < 256; ++i) // find max count and position
    if (ancsii[i] > max)
      {
      max = ancsii[i];
      pos = i;
      }
 
  std::cout << "Max count " << max << " for " << char(pos) << std::endl;
  getchar();
 
  return 0;
}
Universa1
0 / 0 / 0
Регистрация: 10.04.2013
Сообщений: 47
10.04.2013, 19:50  [ТС]     Определить, какой символ чаще других встречается в данном файле. #3
Спасибо!

Добавлено через 13 минут
14 строку не пойму
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
10.04.2013, 20:05     Определить, какой символ чаще других встречается в данном файле. #4
Universa1,

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
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#include <iterator>
using namespace std;
 
#define NUMBER 97
 
void print(pair<char, int> op){
    cout << op.first << " = " << op.second << endl;
}
 
int main()
{ 
    vector<pair<char, int> > coll;
 
    for(int i = 'a'; i <= 'z'; ++i)
        coll.push_back(make_pair(i, 0));
 
    ifstream fin("input.txt", ios::in);
    int symbol;
 
    while(!fin.eof()){
        symbol = (int)fin.get() - NUMBER;
        if(symbol > 0)
            ++coll[symbol].second;
    }
    
    for_each(coll.begin(), coll.end(), print);
 
    cout << "\n\n";
    return 0;
}
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 928
Завершенные тесты: 1
10.04.2013, 23:26     Определить, какой символ чаще других встречается в данном файле. #5
Главная идея в том. Что расширенная ancsii таблица занимает 256 символов всего. Где каждый символ представлен числом от 0 до 255. Т.е. если представление символа(число) взять за индекс, а значение массива по индексу за количество, то легко считывая посимвольно можно получить константную сложность. Можно использовать std::map если не понятно с массивом - принцип тот же.

п.с. 2 yoghurt92, как я понял речь идет о всех символах, а не только о числах (при этом у Вас проверка на числа по верхней границе пролетает)
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
10.04.2013, 23:39     Определить, какой символ чаще других встречается в данном файле. #6
stima, да, я написал только для символов нижнего регистра я хотел сделать как пример, мне кажется, что доделать не составляет труда, он же должен хоть что-то сам сделать)
Yandex
Объявления
10.04.2013, 23:39     Определить, какой символ чаще других встречается в данном файле.
Ответ Создать тему
Опции темы

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