Advertisement
Guest User

6,2!!!!!!

a guest
Nov 19th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <ctype.h>
  6. using namespace std;
  7. int main()
  8. {
  9. char str[150];
  10. cout << "Vvedite stroku" << endl;
  11. gets_s(str);
  12. cout << "Stroka: ";
  13. puts(str);
  14.  
  15. int length = strlen(str); //переменная, равная длине введенной строки. Потом- длина самой короткой группы
  16. int curLength = 0; //длина текущей группы //объявление переменной, в которую будет заноситься длина группы
  17. char item = str[0], curItem = str[0]; //1) символ(0 или 1) самой короткой группы //2)символ группы, которую сейчас читаем
  18. int i, n = strlen(str); // i- счетчик в цикле, n= кол-ву символов в строке
  19.  
  20. for (i = 0; i < strlen(str); i++)
  21. {
  22. if (str[i] != '1' && str[i] != '0') //проверяем, состоит ли строка только из 1 и 0
  23. {
  24. cout << "String is invalid" << endl;
  25. system("pause");
  26. return 0;
  27. }
  28. }
  29.  
  30. for (i = 0; i < strlen(str); i++) //идем по строке
  31. {
  32.  
  33. if (str[i] == curItem && i != strlen(str) - 1) //если символ равен предыдущему и не является предпоследним
  34. {
  35. curLength++; //увеличиваем длину группы
  36. }
  37.  
  38. else
  39. {
  40. if (i == strlen(str) - 1) //если символ предпоследний
  41. {
  42. if (curItem == str[i]) //и равен предыдущему
  43. curLength++; //то +1 к длине этой группы
  44. else //не равен предыдущему
  45. {
  46. curLength = 1; //т.к. не равен предыдущему, то длина группы = 1
  47. curItem = str[i]; //смена символа
  48. }
  49. }
  50.  
  51. if (curLength < length) //не выполнение первого ифа: символ не равен предыдущему. Если длина только что подсчитанной группы <= длине самой короткой группы
  52. {
  53. length = curLength; //присвоение длине самой короткой группы значения, равному только что подсчитанной
  54. item = curItem; //символ самой короткой группы = символу группы, которую только что считали
  55. }
  56. curLength = 1; //начинаем подсчёт кол-ва группы заново
  57. curItem = str[i]; //смена символа
  58. }
  59. }
  60. cout << "Samaya korotkaya gruppa: ";
  61. for (i = 0; i < length; i++)
  62. {
  63. cout << item;
  64. }
  65. cout << endl;
  66. system("pause");
  67. return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement