fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4.  
  5.  
  6. // Проверка, является ли символ буквой.
  7. //На случай, если разделителями будут не только точки и пробелы.
  8. bool bukwa(char asd){
  9. return (asd<='z' and asd>='a')or(asd<='Z' and asd>='A');
  10. }
  11.  
  12. int main()
  13. {
  14.  
  15. unsigned state;//Текущее состояние
  16. //532 - сейчас считывается слово
  17. //1007 - сейчас считывается не слово
  18. state=1007; //По умолчанию считывается не слово.
  19.  
  20.  
  21. int c=0,i=0; //Счётчик подошедших слов и счётчик символов.
  22. char s[1024], symb;//Буфер для символов и символ для сохранения начального символа.
  23.  
  24. fgets(s,1024,stdin);
  25.  
  26. while (true)//В окно эти непонятные проверки
  27. {
  28. if (state==1007){//Если считывается не слово
  29. if (s[i]==0) break;//И попался конец строки - то выйти.
  30.  
  31. if (!bukwa(s[i])){//Если символ не является буквой
  32. //То продолжать считывать без каких либо действий.
  33. }else{//Если буквой
  34. state=532;//Сменить состояние
  35. symb=s[i];//Запомнить символ
  36. }
  37.  
  38. }else{//Если считывается слово
  39. if (s[i]==0){//И попался конец строки - то:
  40. if (s[i-1]==symb) c++;//Проверить конец слова
  41. break; //И выйти.
  42. }
  43. if (!bukwa(s[i])){//Если символ не является буквой
  44. if (s[i-1]==symb) c++;//Проверить конец слова
  45. state=1007;//Сменить состояние
  46. }else{//Если буквой
  47. //То ничего не делать
  48. }
  49. }
  50.  
  51. i++; //В любом случае переключится на следующий символ.
  52. }
  53. printf("%d\n", c);
  54. return 0;
  55. }
  56.  
Success #stdin #stdout 0s 4460KB
stdin
12 12312 55 asdf a f d sda asdasd asdasdas sdsdsdss
stdout
4