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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ELSErg
0 / 0 / 0
Регистрация: 06.03.2014
Сообщений: 3
#1

Работа с файлами и поиск подстроки - C++

06.03.2014, 13:14. Просмотров 306. Ответов 4
Метки нет (Все метки)

Программа должна подсчитать кол-во буквосочетаний "ab" в некотором текстовом файле. Но работает не корректно. Вроде как выводит ответ, но не всегда верный. Хотя бы в тексте программы есть только одно искомое буквосочетание, но программа возвращает ответ 3. Не могу разобраться. Так что прошу помощи у знатоков. Заранее спасибо
ЗЫ: Код приведу ниже

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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    const int  N = 81;
    int count = 0;
    char str[N];
 
    ifstream fin("11test.txt");
    if (!fin) cout << "File open error";
    
    while (!fin.eof()) {
        fin.getline(str, N);
 
        for (int i = 0; i < N-1; i++) {
            if ((str[i] == 'a') && (str[i+1] == 'b')) count++;
        }
    }
    
    fin.close();
 
    cout << "There are " << count << " 'ab' combinations in '11test.txt'" << endl;
    system("pause");
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2014, 13:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с файлами и поиск подстроки (C++):

Работа с файлами, поиск и удаление записей - C++
Добрый вечер. В удаление и поиске студента не выводит все предметы и оценки , а только один предмет и одну оценку. В удаление точно так же,...

Работа с файлами. Поиск и сбор информации - C++
Здравствуйте) Мои навыки программирования целиком и полностью основываются на этом форуме) Зарегистрировался вот из-за того, что уже полдня...

Работа с файлами. Чтение из файла.Поиск. - C++
Нужно создать программу, которая считывает слова с одного файла (словарь) и находит эти слова в другом файле (текст) и выводит на экран эти...

Работа с файлами (поиск и вывод чисел в файле) - C++
Как на с++ сделать программу, которая в текстовому файле найдет и выведет на дисплей все числа? Есть ли для этого функции?

Список. Сортировка и поиск по списку. Работа с файлами - C++
void Search_secondname(void) { Print_header(); cout &lt;&lt; &quot;Введите фамилию для поиска&quot; &lt;&lt; endl; int i = 0; char secondname; ...

Работа с файлами (Определение длины и поиск среднего элемента в документе) - C++
Здравствуйте. Суть задания состоит в том, что необходимо определить длину файла, если длина отрицательная, то найти и вывести средний...

4
THE--MASTER
Заблокирован
06.03.2014, 13:41 #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
std::fstream fs("11test.txt", std::ios::in | std::ios::binary);
if(!fs.is_open())
    return -1;
 
fs.seekg(0, std::ios::end);
size_t file_size = fs.tellg();
fs.seekg(0, std::ios::beg);
char *data = new char[file_size];
fs.read(data, file_size);
fs.close();
 
std::string strData = data;
 
std::string sample = "ab";
int sampleCounter = 0;
size_t pos = 0;
while (true)
{
    pos = strData.find( sample, pos );
    if(pos != std::string::npos)
    {
        sampleCounter++;
        pos += sample.size();
    }
    else
        break;  
}   
    
delete[] data;
 
std::cout << "Sample '" << sample << "' meets " << sampleCounter << " times in the file" << std::endl;
 
system("pause");
1
ELSErg
0 / 0 / 0
Регистрация: 06.03.2014
Сообщений: 3
06.03.2014, 15:55  [ТС] #3
Большое спасибо за ответ!
И не могли бы вы указать на ошибку в моем коде?
0
THE--MASTER
Заблокирован
06.03.2014, 16:20 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от ELSErg Посмотреть сообщение
И не могли бы вы указать на ошибку в моем коде?
обнуляй массив перед записью туда следующей строки из файла, иначе в нём могут остаться данные первой, более длинной строки с твоими искомыми лишними AB

C++
1
2
3
4
5
6
7
8
while (!fin.eof()) {
        memset(str, 0, N);
        fin.getline(str, N);        
        for (int i = 0; i < N-1; i++) {
            if ((str[i] == 'a') && (str[i+1] == 'b'))
                count++;
        }
    }
1
ELSErg
0 / 0 / 0
Регистрация: 06.03.2014
Сообщений: 3
06.03.2014, 17:00  [ТС] #5
Класс! Спасибо!!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2014, 17:00
Привет! Вот еще темы с ответами:

Работа с файлами (создание, ввод, вывод и поиск по значению ключевого поля) - C++
Мне нужно разработать программу, которая реализует с файлом последовательного доступа следующие операции: создание, ввод, вывод и поиск по...

Мне надо сделать поиск последнего вхождения подстроки s1 в строку s(с функцией LastPos, не strstr). В этом коде просто вхождение подстроки в строку. - C++
#include &lt;stdio.h&gt; int count_of_substrings(string s, string s1){ int start = 0; int count = 0; int pos = 0; ...

Поиск подстроки - C++
Всем привет. Вот такое вот дали задание: найти все вхождения данного образца в строке. При этом надо указать индекс в тексте с которого...

Поиск подстроки - C++
Эта программа написана чтобы искало буквы....а как написать чтобы искало количество слова например &quot; kag &quot; #include&lt;iostream.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
06.03.2014, 17:00
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru