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

Подсчёт вхождений каждого слова в текстовом файле[C++] - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Йа
0 / 0 / 0
Регистрация: 08.05.2010
Сообщений: 22
14.05.2010, 22:32     Подсчёт вхождений каждого слова в текстовом файле[C++] #1
Здравствуйте. Помогите пожалуйста.
Требуется написать программу, которая бы из текстогого файла примерно такого типа: "Эта строка тестовая строка" выводила бы на консоль:
Эта повторяется 1 раз
строка повторяется 2 раз
тестовая повторяется 1 раз

И записывала бы эти данные в другой файл.
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
#pragma hdrstop
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdlib>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
char bufRus[256];
 
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
 
typedef std::map<std::string, int>StrIntMap;
 
void countWords(std::istream& in, StrIntMap& words)
 {
std::string s;
while (in>>s)
{
 ++words[s];
}
 }
 
int main(int argc, char** argv)
{
if (argc < 2)
return (EXIT_FAILURE);
 
std::ifstream in(argv[1]);
 
if (!in)
exit(EXIT_FAILURE);
 
StrIntMap w;
countWords(in, w);
 
for (StrIntMap::iterator p = w.begin();
p!=w.end(); ++p)
{
std::cout<<p->first<< Rus("присутствует")<<p->second<<Rus(" раз");
}
getch();
return 0;
}
ЗЫ. Ядро программы вроде такое. А вот как подключить внешние файлы?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2010, 22:32     Подсчёт вхождений каждого слова в текстовом файле[C++]
Посмотрите здесь:

Замена слова в текстовом файле!?!?! C++
C++ В заданном текстовом файле подсчитать частоту использования каждого слова из словаря (другого текстового файла).
Поиск слова в текстовом файле C++
Для каждого числа в текстовом файле определить сумму его чисел C++
C++ используя стек распечатать слова в текстовом файле в обратном порядке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Oleg462
31 / 30 / 3
Регистрация: 18.01.2010
Сообщений: 123
14.05.2010, 22:51     Подсчёт вхождений каждого слова в текстовом файле[C++] #2
C++
1
2
3
FILE * opn = fopen("C:\\data.txt","w") ;
fgets(bufRus, 256, opn);// в массив записываются элементы из файла
fclose(opn) ;
Йа
0 / 0 / 0
Регистрация: 08.05.2010
Сообщений: 22
14.05.2010, 22:55  [ТС]     Подсчёт вхождений каждого слова в текстовом файле[C++] #3
Спасибо Эммм.... я забыл сказать. положение текстового файла задаётся пользователем
Oleg462
31 / 30 / 3
Регистрация: 18.01.2010
Сообщений: 123
14.05.2010, 23:02     Подсчёт вхождений каждого слова в текстовом файле[C++] #4
C++
1
2
char * name = "..." ; //вводишь путь к файлу
FILE * opn = fopen(name,"w") ;
Йа
0 / 0 / 0
Регистрация: 08.05.2010
Сообщений: 22
14.05.2010, 23:22  [ТС]     Подсчёт вхождений каждого слова в текстовом файле[C++] #5
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#pragma hdrstop
#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
#include <cstdlib.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
#include <map.h>
 
 
 LONGLONG fFileSize (HANDLE hFile);
void remake(char* text, int size);
//---------------------------------------------------------------------------
 
#pragma argsused
char bufRus[256];
 
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
void mai()
{
char *bufPath = 0,*outPath = 0, *text = 0;
int size = 0;
HANDLE hFileR;
unsigned long r;
 
bufPath = new char [100];
  do {
      cout << "Source FILE(adress): ";
      cin >> bufPath;
      hFileR = CreateFile (bufPath,
                    GENERIC_READ,
                    FILE_SHARE_READ,
                    NULL,
                    OPEN_EXISTING,
                    FILE_ATTRIBUTE_NORMAL,
                    NULL);
 
      if (hFileR == INVALID_HANDLE_VALUE) {
 
      cout <<"Not Found!\n\n";
      }
 
  } while (hFileR == INVALID_HANDLE_VALUE);
 
LONGLONG fFileSize (HANDLE hFile);
{
LONGLONG FileSize = 0;
DWORD dwSizeHigh=0, dwSizeLow=0;
dwSizeLow = GetFileSize(hFileR, &dwSizeHigh);
FileSize = (dwSizeHigh * (MAXDWORD+1)) + dwSizeLow;
 
}
//----------------------------------------------------------------------------
     size = fFileSize (hFileR);
     text = new char [size];
     ReadFile (hFileR,&text , size , &r, NULL);
     remake(text, size);
     outPath = new char [100];
      cout << "Out FILE(adress): ";
      cin >> outPath;
     CreateFile (outPath,
                    GENERIC_READ,
                    FILE_SHARE_READ,
                    NULL,
                    OPEN_EXISTING,
                    FILE_ATTRIBUTE_NORMAL,
                    NULL);
 
 
}
 
//---------------------------------------------------------------------------
 
typedef std::map<std::string, int>StrIntMap;
 
 
void countWords(std::istream& in, StrIntMap& words)
 {
std::string s;
while (in>>s)
{
 ++words[s];
}
 }
 
int main(int argc, char** argv)
{
if (argc < 2)
return (EXIT_FAILURE);
 
std::ifstream in(argv[1]);
 
if (!in)
exit(EXIT_FAILURE);
 
StrIntMap w;
countWords(in, w);
 
for (StrIntMap::iterator p = w.begin();
p!=w.end(); ++p)
{
std::cout<<p->first<< Rus("присутствует")<<p->second<<Rus(" раз");
}
getch();
}
//------------------------------------------------------------------
Вот более верный...но нерабочий код. Посмотрите, пожалуйста, почему?
Yandex
Объявления
14.05.2010, 23:22     Подсчёт вхождений каждого слова в текстовом файле[C++]
Ответ Создать тему
Опции темы

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