fork(1) download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. void pobierz();
  7. string usuwanie_nie_liter(int n, int l, string nazwa);
  8. string usuwanie_cyfr(int n, int l, string nazwa);
  9. string usuwanie_samoglosek(int n, int l, string nazwa);
  10. string usuwanie_czegokolwiek(int n, int l, string nazwa, size_t pozycja_pierwszej_samogloski);
  11.  
  12. int main()
  13. {
  14. pobierz();
  15. return 0;
  16. }
  17.  
  18. void pobierz()
  19. {
  20. int n, l;
  21. string nazwa;
  22.  
  23. cin>>n>>nazwa;
  24. l=nazwa.length();
  25.  
  26. if (l==n)
  27. cout<<nazwa;
  28. else
  29. cout<<usuwanie_nie_liter(n,l,nazwa);
  30. }
  31.  
  32. string usuwanie_nie_liter(int n, int l, string nazwa)
  33. {
  34. int i=l-1;
  35.  
  36. do
  37. {
  38. if ( nazwa[i]==char(65)||nazwa[i]==char(66)||nazwa[i]==char(67)||nazwa[i]==char(68)||nazwa[i]==char(69)
  39. ||nazwa[i]==char(70)||nazwa[i]==char(71)||nazwa[i]==char(72)||nazwa[i]==char(73)||nazwa[i]==char(74)
  40. ||nazwa[i]==char(75)||nazwa[i]==char(76)||nazwa[i]==char(77)||nazwa[i]==char(78)||nazwa[i]==char(79)
  41. ||nazwa[i]==char(80)||nazwa[i]==char(81)||nazwa[i]==char(82)||nazwa[i]==char(83)||nazwa[i]==char(84)
  42. ||nazwa[i]==char(85)||nazwa[i]==char(86)||nazwa[i]==char(87)||nazwa[i]==char(88)||nazwa[i]==char(89)
  43. ||nazwa[i]==char(90)||nazwa[i]==char(97)||nazwa[i]==char(98)||nazwa[i]==char(99)||nazwa[i]==char(100)
  44. ||nazwa[i]==char(101)||nazwa[i]==char(102)||nazwa[i]==char(103)||nazwa[i]==char(104)||nazwa[i]==char(105)
  45. ||nazwa[i]==char(106)||nazwa[i]==char(107)||nazwa[i]==char(108)||nazwa[i]==char(109)||nazwa[i]==char(110)
  46. ||nazwa[i]==char(111)||nazwa[i]==char(112)||nazwa[i]==char(113)||nazwa[i]==char(114)||nazwa[i]==char(115)
  47. ||nazwa[i]==char(116)||nazwa[i]==char(117)||nazwa[i]==char(118)||nazwa[i]==char(119)||nazwa[i]==char(120)
  48. ||nazwa[i]==char(121)||nazwa[i]==char(122)||nazwa[i]==char(36))
  49. i--;
  50. else
  51. {
  52. nazwa.erase(i,1);
  53. i--;
  54. l=nazwa.length();
  55. }
  56.  
  57. if (i<0)
  58. break;
  59. }
  60. while (l>n);
  61.  
  62. if (i<0&&l>n)
  63. return usuwanie_cyfr(n,l,nazwa);
  64. else return nazwa;
  65. }
  66.  
  67. string usuwanie_cyfr(int n, int l, string nazwa)
  68. {
  69. int i=l-1;
  70.  
  71. do
  72. {
  73. if (nazwa[i]==char(48)||nazwa[i]==char(49)||nazwa[i]==char(50)||nazwa[i]==char(51)||nazwa[i]==char(52)||nazwa[i]==char(53)||nazwa[i]==char(54)||nazwa[i]==char(55)||nazwa[i]==char(56)||nazwa[i]==char(57))
  74. {
  75. nazwa.erase(i,1);
  76. i--;
  77. l=nazwa.length();
  78. }
  79. else i--;
  80.  
  81. if (i<0)
  82. break;
  83. }
  84. while (l>n);
  85.  
  86. if (i<0&&l>n)
  87. return usuwanie_samoglosek(n,l,nazwa);
  88. else return nazwa;
  89. }
  90.  
  91. string usuwanie_samoglosek(int n, int l, string nazwa)
  92. {
  93. size_t pozycja_pierwszej_samogloski=nazwa.find_first_of("aeiouyAEIOUY");
  94. if(pozycja_pierwszej_samogloski==string::npos)
  95. return usuwanie_czegokolwiek(n,l,nazwa, pozycja_pierwszej_samogloski);
  96. else
  97. {
  98. do
  99. {
  100. size_t samogloska=nazwa.find_first_of("aeiouyAEIOUY",1);
  101. if (samogloska!=string::npos&&samogloska!=pozycja_pierwszej_samogloski)
  102. {
  103. nazwa.erase(samogloska,1);
  104. l=nazwa.length();
  105. }
  106. else break;
  107. }
  108. while (l>n);
  109. }
  110.  
  111. if (l>n) return usuwanie_czegokolwiek(n,l,nazwa,pozycja_pierwszej_samogloski);
  112. else return nazwa;
  113. }
  114.  
  115. string usuwanie_czegokolwiek(int n, int l, string nazwa, size_t pozycja_pierwszej_samogloski)
  116. {
  117. int i=l-2;
  118. do
  119. {
  120. if (i!=pozycja_pierwszej_samogloski)
  121. {
  122. nazwa.erase(i,1);
  123. i--;
  124. l=nazwa.length();
  125. }
  126. else i--;
  127. }
  128. while(l>n);
  129.  
  130. return nazwa;
  131. }
  132.  
Runtime error #stdin #stdout #stderr 0s 4460KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
terminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string::erase: __pos (which is 18446744073709551615) > this->size() (which is 0)