fork download
  1. #include <iostream>
  2. #include <sstream>
  3.  
  4. using namespace std;
  5.  
  6. int main ()
  7. {
  8. int LiczbaPrzypadkow;
  9.  
  10. cin >> LiczbaPrzypadkow;
  11.  
  12. string SkracaneSlowo;
  13. int DlugoscSkracanegoSlowa;
  14. static char PoprzedniaLitera;
  15. int PozycjaAktualnejLitery;
  16. ostringstream KonwersjaLicznikaWystapienAktualnejLitery;
  17. static int LicznikWystapienAktualnejLitery = 1;
  18. static string SkroconeSlowo;
  19.  
  20. for (int KtoryPrzypadek = 0; KtoryPrzypadek != LiczbaPrzypadkow;
  21. ++KtoryPrzypadek)
  22. {
  23. cin >> SkracaneSlowo;
  24.  
  25. SkroconeSlowo = "";
  26. PoprzedniaLitera = static_cast <char> (NULL);
  27. LicznikWystapienAktualnejLitery = 1;
  28.  
  29. DlugoscSkracanegoSlowa = SkracaneSlowo.length();
  30.  
  31. for (PozycjaAktualnejLitery = 0;
  32. PozycjaAktualnejLitery < DlugoscSkracanegoSlowa;
  33. ++PozycjaAktualnejLitery)
  34. {
  35. if (PoprzedniaLitera ==
  36. SkracaneSlowo [PozycjaAktualnejLitery])
  37. {
  38. ++LicznikWystapienAktualnejLitery;
  39. //Jeœli siê zgadza ostatnio to trzeba przeskoczyæ do else (goto).
  40. }
  41. else
  42. {
  43. if (LicznikWystapienAktualnejLitery > 2)
  44. {
  45. KonwersjaLicznikaWystapienAktualnejLitery <<
  46. LicznikWystapienAktualnejLitery;
  47.  
  48. SkroconeSlowo +=
  49. KonwersjaLicznikaWystapienAktualnejLitery.str () +
  50. PoprzedniaLitera;
  51. }
  52. else
  53. {
  54. SkroconeSlowo += string (SkracaneSlowo,
  55. PozycjaAktualnejLitery,
  56. LicznikWystapienAktualnejLitery);
  57. }
  58.  
  59. LicznikWystapienAktualnejLitery = 1;
  60. PoprzedniaLitera = SkracaneSlowo [PozycjaAktualnejLitery];
  61. }
  62. }
  63.  
  64. cout << SkroconeSlowo << endl;
  65. }
  66. }
  67.  
Success #stdin #stdout 0s 3300KB
stdin
OPSS
AAABBBBA
stdout
Standard output is empty