С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
al072
15 / 15 / 0
Регистрация: 03.02.2010
Сообщений: 133
#1

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

03.10.2011, 12:27. Просмотров 1025. Ответов 2
Метки нет (Все метки)

Доброго времени суток, в данный момент я читаю книгу Страуструпа "Язык программирования С++" и пытаюсь прорешивать задачи, которые он дает, даже скачал приложение с ответами на задачи из его книги. Но начиная с пункта 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2011, 12:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция подсчета пар букв в строке (C++):

Написать программу подсчета букв ‘и’ во введенной строке - C++
Здравствуйте. Простейшая программа: Написать программу подсчета букв ‘и’ во введенной строке. Не могу понять - почему не работает?...

Написать программу подсчета букв «о» во введенной строке - C++
Написать программу подсчета букв «о» во введенной строке

Не работает функция подсчета количеств букв "а" в словах - C++
Подскажите пожалуйста почему не работает функция подсчета количеств букв &quot;а&quot; в словах. Ничего не выводит. #include &lt;iostream&gt; #include...

Напишите программу подсчета суммарного числа букв 'а' и букв 'b' в данной строковой переменной - C++
Напишите программу подсчета суммарного числа букв 'а' и букв 'b' в данной строковой переменной. Вывести на экран каких букв больше. ...

Подсчитать количество пар букв - C++
Помогите, пожалуйста, с задачей! Во введенном слове подсчитать количество различных пар букв. Например, в слове babacabacd 5 различных пар...

Подсчитать количество различных пар букв - C++
Помогите решить задачу, вернее переделать))) Во введенном слове подсчитать количество различных пар букв. ( например, в слове вавасавасd...

2
xAtom
915 / 740 / 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;
}
1
al072
15 / 15 / 0
Регистрация: 03.02.2010
Сообщений: 133
04.10.2011, 17:44  [ТС] #3
Спасибо, все работает как часы!Но вот интересно почему пример из книги выдает столько ошибок, теоретически код ведь написан правильно, подключены соответствующие заголовочные файлы..
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2011, 17:44
Привет! Вот еще темы с ответами:

Во введенном слове подсчитать количество различных пар букв - C++
13. Во введенном слове подсчитать количество различных пар букв. ( например, в слове вавасавасd –5 различных пар букв).

Программа подсчета различных букв в слове (из Паскаля в С++) - C++
{ Составить программу подсчета различных букв в слове. } var s:string; r:real; i,j,n:integer; begin r:=0; ...

Улучшение алгоритма подсчета строк, букв, слов - C++
Данный алгоритм, компилируется. Однако есть недочеты: 1. Не всегда верно считает буквы. Почему не очень понимаю. 2. Два спейса...

функция подсчета слов - C++
Здравствуйте! Помгите исправить ошибку в функции подсчета слов оканчивающихся на символ Пркатически все варианты пробывал но ничего...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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