fork(4) download
  1.  
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <algorithm>
  5. #include <string>
  6.  
  7. using namespace std;
  8. int count_words (string s) //функция подсчитывает слова в строке
  9. {
  10. s+=' ';
  11. int a = 0;
  12. for (size_t i=0; i<s.length(); i++)
  13. if (s[i]==' ') a++;
  14. return a;
  15. }
  16. string * cut_words (string s) //функция разрезает строку на слова и возвращает массив
  17. {
  18. s+=' ';
  19. int c = 0;
  20. int p = 0;
  21. int i=0;
  22. string *s_return = new string [count_words(s)];
  23. while (s.length() != 0)
  24. {
  25. if (s[i] != ' ')
  26. {
  27. c++;
  28. i++;
  29. }
  30. else
  31. {
  32. i=0;
  33. s_return[p] = s.substr(0, c);
  34. s.erase(0, c+1);
  35. c = 0;
  36. p++;
  37. }
  38. }
  39. return s_return;
  40. }
  41.  
  42. int main ()
  43. {
  44. string s;
  45. getline (cin, s);
  46. string *s_return;
  47. s_return = cut_words(s);
  48. for (int i=0; i<count_words(s); i++)
  49. {
  50. string s_tmp = s_return[i];
  51. if (s_tmp.empty()) //если ячейка пуста, то продолжаем дальше
  52. {
  53. continue;
  54. }
  55. else //а если нет, то ищем перестановки.
  56. {
  57. int p = 0;
  58. for (int j=i+1; j<count_words(s); j++)
  59. {
  60. if ( is_permutation (s_tmp.begin(), s_tmp.end(), s_return[j].begin())) //если перестановка
  61. if (s_tmp.length() == s_return[j].length()) //и если одинаковая длина слов
  62. {
  63. cout<<s_return[j]<<endl; //выводим на экран
  64. s_return[j].clear(); //очищаем строку
  65. p++;
  66. }
  67. }
  68. if (p>=1) cout<<s_tmp<<endl;
  69. }
  70. }
  71. return 0;
  72. }
  73.  
Success #stdin #stdout 0s 3432KB
stdin
the
and
a
to
I
stdout
Standard output is empty