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

Функция подсчета пар букв в строке - C++

Восстановить пароль Регистрация
 
al072
14 / 14 / 0
Регистрация: 03.02.2010
Сообщений: 132
03.10.2011, 12:27     Функция подсчета пар букв в строке #1
Доброго времени суток, в данный момент я читаю книгу Страуструпа "Язык программирования С++" и пытаюсь прорешивать задачи, которые он дает, даже скачал приложение с ответами на задачи из его книги. Но начиная с пункта 5.12, решить задачу не получается, так как компилятор выдает ошибку.Вопрос следующий:

Помогите написать функцию, которая подсчитывает количество повторов пар букв в строке типа string, а также в символьном массиве с терминальным нулем (строка в С-стиле). Например , пара букв "ab" входит в строку "xabaacbaxabb" дважды.

Пробовал двумя способами, но оба варианта выдают ошибку:

1-й вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <ostream>
using std::string;
 
size_t count_charpair (string const& s,char a,char b)
{
   size_t result=0;
   string::iterator p= s.begin();
   while (p!=s.end())
      if (*p++==a)
           if(p!=s.end && *p==b)
                      ++result;
return result;
}
2-й вариант

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <ostream>
using std::string;
 
size_t count_charpair (string const* s,char a,char b)
{
   assert(s);
   size_t result=0;
   while (*s)
      if (*s++==a)
           if(*s==b)
                      ++result;
return result;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2011, 12:27     Функция подсчета пар букв в строке
Посмотрите здесь:

C++ Во введенном слове подсчитать количество различных пар букв
C++ функция подсчета слов
Подсчитать количество пар букв C++
Подсчитать количество различных пар букв C++
C++ улучшение алгоритма подсчета строк, букв, слов
Не работает функция подсчета количеств букв "а" в словах C++
C++ Программа подсчета различных букв в слове (из Паскаля в С++)
C++ функция подсчета палиндромов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
03.10.2011, 13:59     Функция подсчета пар букв в строке #2
al072, вот держи.
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
#include <iostream>
using std::string;
using std::cout;
using std::endl;
size_t count_pair1(const string str, char a, char b);
int  count_pair2(const char* str, char a, char b);
 
int  main(void) {
  string str = "xabaacbaxab";
  cout << "count pair string: " << count_pair1(str, 'a', 'b') << endl;
 
  char buf[] = "XY to XY off XY-YX-YX";
  cout << "count pair char: " << count_pair2(buf, 'X', 'Y') << endl;
 
  std::cin.get();
  return 0;
}
 
size_t count_pair1(const string str, char a, char b) {
   size_t cnt = 0u;
   for(string::const_iterator i = str.begin(); i + 1 != str.end(); *i++) {
         if(*i == a && *(i + 1) == b)
             cnt++;
   }
   return cnt;
}
 
int  count_pair2(const char* str, char a, char b) {
  int cnt = 0;
  for(; *(str + 1) != '\0'; *str++) {
        if( *str == a && *(str + 1) == b)
               cnt++;
  }
  return cnt;
}
al072
14 / 14 / 0
Регистрация: 03.02.2010
Сообщений: 132
04.10.2011, 17:44  [ТС]     Функция подсчета пар букв в строке #3
Спасибо, все работает как часы!Но вот интересно почему пример из книги выдает столько ошибок, теоретически код ведь написан правильно, подключены соответствующие заголовочные файлы..
Yandex
Объявления
04.10.2011, 17:44     Функция подсчета пар букв в строке
Ответ Создать тему
Опции темы

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