Набросал вот кое-что... опять таки не идеальный код. Ибо желательно сделать так, чтобы пользователь мог сам ввести число символов! Но почему-то не получается, потому что начинает криво работать функция gets_s() Не знаю почему, если кто знает - объясните пожалуйста. Код достаточно понятный. Единственное, что можно отметить, это проверку на конец строки, ибо алгоритм предполагает, что после каждого слова стоит пробел, но конец может быть "беспробельным", а '\0' есть всегда 
| Код | #include <iostream>
using namespace std;
#define n 20
int main() { int prev=0; // позиция первого символа в слове int count = 0; char *str;
str = new char [n+1]; gets_s(str,n);
for (int i=0; i<strlen(str)+1; ++i) { if ((str[i] == ' ') || (str[i] == '\0')) { if (str[i-1] == str[prev]) { ++count; } prev = i + 1; } }
cout << count; delete [] str;
return 0; } |
Ваш код... Я понял, что вы хотели сделать ) Но он в принципе не будет работать! Вот здесь
| Код | . . . if ((name[i-1]!=' ')&(name[i]==' ')&(name[i-k]==name[i])) . . . |
какой-то абсурд! Вы проверяете равность текущего символа пробелу (name[i]==' ') , и тут же, якобы, пытаетесь проверить равность его первому символу (name[i-k]==name[i]). "Якобы" здесь потому, что первый символ будет name[i-k-1], с учетом того, что name[i]==' ', а k это длина слова. Не пытался исправить ваш код, написал свой. Надеюсь поможет вам |