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

Количество вхождений слова в файл - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вопрос по контейнерам http://www.cyberforum.ru/cpp-beginners/thread246405.html
Если я сделать вот так: struct mag { char adr; int zarpl_za_den; std::vector<std::string> vect; std::unordered_map<std::string, int> mapmassiv; }mas; Т.е. помещу контейнеры map и vector в статический массив структур, то я не совсем представляю себе как работать с контейнерами?
C++ запись массива структур в файл Запись массива структур в файл так, что бы потом можно было считывать, удалять ненужные записи, добавлять, сортировать, поиск. Я пробовал такSostav mas; FILE *f; f=fopen("database.txt","ab+"); if (!f) { cout<<"Unable to open "<<file<<" for writing.\n"; return(1); http://www.cyberforum.ru/cpp-beginners/thread246402.html
дайте пожалуйста ссылку где скачать Turbo С++ C++
дайте пожалуйста ссылку где скачать Turbo С++
Путем перестановки элементов квадратной вещественной матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу C++
Люди, помогите!!! Путем перестановки элементов квадратной вещественной матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу, следующий по величине - (1,1), следующий по величине – в позиции (2,2) и т.д., заполнив таким образом всю главную диагональ. Найти номер первой из строк, не содержащих не одного положительного элемента.
C++ Нарисовать фигуру (язык С) http://www.cyberforum.ru/cpp-beginners/thread246386.html
прямоугольник и сделать какую-то заливку цветную. заранее спс___)))
C++ Разделить число на дробную и целую часть как можно разделить число на дробную и целую часть void main() { long a1; // a1 = целая часть числла double a; // а число cout<<"Vvedite celoe chilso\n "; cin>>a; a1=a; а с отделением дробной части возникают проблемы:( подробнее

Показать сообщение отдельно
lesorub_
2 / 2 / 0
Регистрация: 20.02.2011
Сообщений: 51
21.02.2011, 19:07     Количество вхождений слова в файл
Здравствуйте, уважаемые программисты! Нужна Ваша помощь, какая именно, речь пойдет далее

Для начала я скажу, что программа делает, и приложу свой код, который состряпал:

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

Вот код:
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
#include "stdafx.h"
 
using namespace std;
 
int main()
{
    const int len = 255;
    char word[len], line[len];
    int branch;
    setlocale(LC_ALL, "Russian");
    
    do {
        cout << "Введите слово для поиска: ";
        cin >> word;
        int l_word = strlen(word);
        ifstream fin ("text.txt");
        if (!fin) 
            {
                cout << "Ошибка открытия файла." << endl;
                return 1;
            }
 
    int count = 0;
    
    while (fin.getline(line, len))
    {
        char *p = line;
        
        while(p=strstr(p, word))
        {
            cout << "Cовпадение в подстроке: " << p << endl;
            char *c=p;
            p+=l_word;
            
            if(c!=line)
                if (!ispunct(*(c-1)) && !isspace(*(c-1)))
            continue;
            if (ispunct(*p) || isspace(*p) || (*p == '\0'))
                count++;
        }
    }
    cout << endl << "Слово " << word << " встретилось в файле " << count << " раз(а)." << endl; 
    cout << "\nЧтобы продолжить поиск, нажмите '1'. Чтобы выйти из программы, нажмите '2'.\n";  
    cin >> branch;
        }   
    while (branch!=2);
    return 0;
А вот сами вопросы:

1) как сделать, чтобы поиск производился без учета регистра? (например, пишу в файле слово Cat и cat, слова одинаковые, но разный регистр, соответственно у меня определяет кол-во вхождений cat 1 раз;

2) почему требуется контрольный вывод в строке /*cout << "Cовпадение в подстроке: " << p << endl;*/
Без него программа не определяет символ, стоящий после введенного слова. К примеру, пишу cat и catw, программа без этой строки находит 2 совпадения, считая что cat и catw одинаковые слова.

3) Как в C++ сделать выход из цикла по нажатии клавиш Ctrl+Z?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru