Найти количество слов в которой заданная буква встречается более 1-го раза. C++
Помогите пожалуйста решить эту задачу, все никак не получается, что то делаю не правильно, но не знаю что, результат всегда выбивает 0. Полное задание: "В заданной строке найти количество слов, в которых заданная буква встречается более 1 раза."
Мой код:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cmath>
#include <string>
#include <cstdlib>
using namespace std;
int main(){
char str[100] = "robert, error, work, rob, refferi";
char ch;
cout << str << endl;
int counter = 0;
char* ptr = strtok(str, " ,.!?:");
cout << "Enter a letter: ";
cin >> ch;
while (ptr != NULL)
{
int i = 0;
if (ptr[i] == ' ' && ptr[strlen(ptr) - 1] == ch) {
counter++;
}
ptr = strtok(NULL, " ,.-");
}
if (ch > 1) {
cout << "Number of words with a letter " << ch << " equally " << counter << "\n";
}
}
Я искал количество слов, в которых буква "r" встречается более 1 раза, в самой строке есть такие слова, но результат - 0. За помощь буду благодарен!
Ответы (2 шт):
if (ptr[i] == ' ' && ptr[strlen(ptr) - 1] == ch) {
counter++;
}
Вы считаете слова, где первая буква пробел (а она им быть не может из-за strtok, а последняя ch.
Напишите что-то с поиском strchr или хотя бы простой перебор:
int bukv = 0;
for(int i = 0; p[i]; i++)
if (p[i] == ch)
if (++bukv == 2) {
counter++;
break;
}
Спасибо, что указали где проблема, только все оказалось намного проще, я изменил условие:
if (ptr[strlen(ptr) - 2] == ch) {
counter++; }
Теперь оно правильно ищет количество