Advertisement
Artem771577

Lab_6

Nov 18th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <vector>
  4. using namespace std;
  5.  
  6.  
  7. ////////////////// ЧАСТЬ А ////////////////////////////
  8.  
  9. char* stroka(const char* str)
  10. {
  11. //создаем вторую строку для вывода
  12. char *str2 = new char[301];
  13.  
  14. int k = 0;
  15. int j = 0;
  16. bool probel = 0;
  17. int s = strlen(str);
  18. for (k; k < s; k++)
  19. {
  20. if (str[k] != ' ')
  21. {
  22. probel = 1;
  23. }
  24. if (probel == 1)
  25. {
  26. for (j; j < s; j++)
  27. {
  28. str2[j] = str[k];
  29. k++;
  30. }
  31. str2[s] = 0;
  32. return str2;;
  33. }
  34. probel = 0;
  35. }
  36. str2[s] = 0;
  37.  
  38. return str2;
  39. }
  40.  
  41. //////////////////// ЧАСТЬ Б ////////////////////////////
  42.  
  43. char* changeStr(const char* str)
  44. {
  45. vector <char> latinAlphWords; //для слов из латинских букв
  46. vector <char> othersWords; //для остальных слов
  47.  
  48. //Строка вывода
  49. char* str2 = new char[301];
  50.  
  51. int dlinaStr = 0, i = 0;
  52.  
  53. //Узнаем длину строки
  54. while (str[i] != 0)
  55. {
  56. i++;
  57. }
  58. dlinaStr = i;
  59.  
  60. int now = 0;
  61. int j = 0;
  62. int shchetchik = 0;
  63. for (now = 0; now <= dlinaStr; now++)
  64. {
  65. //если символ является латинской буквой,то увеличиваем счетчик
  66. if ((str[now] >= 'a' && str[now] <= 'z') || (str[now] >= 'A' && str[now] <= 'Z'))
  67. {
  68. shchetchik++;
  69. }
  70. //если символ является пробелом или 0,то проверяем его
  71. if (str[now] == ' ' || str[now] == 0)
  72. {
  73. //условие ,если слово состоит полностью из латинских букв
  74. if (shchetchik == now - j)
  75. {
  76. for (j; j <= now; j++)
  77. {
  78. latinAlphWords.push_back(str[j]);
  79. }
  80. j = now + 1;
  81. shchetchik = 0;
  82.  
  83. }
  84. //другие слова
  85. else
  86. {
  87. for (j; j <= now; j++)
  88. {
  89. othersWords.push_back(str[j]);
  90. }
  91. j = now + 1;
  92. shchetchik = 0;
  93. }
  94. }
  95. }
  96.  
  97.  
  98. //заполнение строки вывода
  99. int b = 0;
  100. int q = latinAlphWords.size();
  101. for (b; b < q; b++)
  102. {
  103. str2[b] = latinAlphWords[b];
  104. }
  105. str2[b - 1] = ' ';
  106.  
  107. i = 0;
  108. for (i; i < othersWords.size(); i++)
  109. {
  110. str2[b + i] = othersWords[i];
  111. }
  112. str2[b -1 + i] = 0;
  113. return str2;
  114. }
  115.  
  116. int main()
  117. {
  118. setlocale(LC_ALL, "ru");
  119. char *sA = new char[301];
  120. char *sB = new char[301];
  121. cout << "Введите строку для части А : " << endl;
  122. cin.getline(sA, 301);
  123. cout << "Введите строку для части Б : " << endl;
  124. cin.getline(sB, 301);
  125.  
  126. //эти указатели созданы для очищения динамической памяти
  127. char* temp = 0;
  128. char* temp1 = 0;
  129.  
  130. cout << (temp = stroka(sA)) <<endl;
  131. cout << (temp1= changeStr(sB)) << endl;
  132.  
  133. delete[] temp1;
  134. delete[] temp;
  135. delete[] sA;
  136. delete[] sB;
  137. system("pause");
  138.  
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement