fork download
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. bool f (char x)
  6. {
  7. return ((x<='9') || (x>='a' && x<='z') || (x>='A' && x<='Z')); //Проверяем является ли символ частью числа или переменной.
  8. }
  9. int NOP (string s, char c) //функция, читающая, сколько раз символ c встречается в строке s
  10. {
  11. int n=0;
  12.  
  13. if (s.find_first_of(c) == s.find_last_of(c)) // проверяем, больше ли вхождений символа с в троку, чем 1
  14. {
  15. if (s.find_first_of(c)<s.size() && s.find_first_of(c)>0)
  16. return 1;
  17. else
  18. return 0;
  19. }
  20.  
  21. size_t i=s.find_first_of(c); //находим первое вхождение символа с и проверяем, не в наале ли он строки. Это делается отдельно, чтобы не выходить за пределы строки.
  22. if (i!=0)
  23. if (f(s[i-1])&&f(s[i+1]))
  24. n++;
  25. s.at(i) = '_';
  26.  
  27. size_t q=s.find_last_of(c); //Аналогично, находим последнее вхождение символа с
  28. if (q == s.size()-1)
  29. if (f(s[i-1])&&f(s[i+1]))
  30. n--;
  31.  
  32. while (i<q)
  33. {
  34. i=s.find_first_of(c);
  35. s.at(i) = '_';
  36. if (f(s[i-1])&&f(s[i+1]))
  37. n++;
  38. }
  39. return n;
  40. }
  41.  
  42. int main()
  43. {
  44. string s;
  45. getline(cin,s);
  46. cout<<NOP(s,'+')+NOP(s,'-')+NOP(s,'*');
  47. return 0;
  48. }
Success #stdin #stdout 0s 3468KB
stdin
2+6*6
stdout
2