ulvis.paste.net - pastebin

Paste Search Dynamic
Recent pastes
laba6.2
  1. #include <iomanip>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <ctype.h>
  6. #include <iostream>
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12.         char str1[40];   //создание строки
  13.         gets_s (str1); //ввод строки
  14.         cout << str1 << endl; //вывод строки
  15.         int length = strlen(str1); //объявлеение переменноой, размер которой равен размеру строки. Далее её размер = размеру самой короткой группы
  16.         int buffLength = 0; //объявление переменной, в которую будет заноситься длина группы
  17.         char item = str1[0], buffItem = str1[0]; //объявление переменных: 1)содержит символ (0 или 1) самой короткой группы 2) содержит символ грцппы, которую сейчас считаем
  18.  
  19.         for (int i = 0; i < strlen(str1); i++) //проверка, чтобы строка состояла из 0 и 1
  20.         {
  21.                 if (str1[i] != '1' && str1[i] != '0')
  22.                 {
  23.                         cout << "String is invalid" << endl;
  24.                         return 0;
  25.                 }
  26.         }
  27.  
  28.         for (int i = 0; i < strlen(str1); i++)
  29.         {
  30.                 if (str1[i] == buffItem && i != strlen(str1)-1) //если  символ не является предпоследним и равен предыдущему
  31.                 {
  32.                         buffLength++; //+1 к длине группы
  33.                 }
  34.                 else
  35.                 {
  36.                         if (i == strlen(str1) - 1) //если символ предпоследний
  37.                         {
  38.                                 if(buffItem == str1[i]) buffLength++; //и равен предыдущему, то +1 к длине этой группы
  39.                                 else
  40.                                 {
  41.                                         buffLength = 1; //тк не равен предыдущему, то длина группы - 1
  42.                                         buffItem = str1[i]; //смена символа
  43.                                 }
  44.                         }
  45.                         if (buffLength <= length) //не выполнеие первого ифа: символ не равен предыдущему. Если длина только  что подсчитанной группы <= длине самой короткой группы
  46.                         {
  47.                                 length = buffLength; //присвоение длине самой короткой группы значения, равному только что подсчитанной
  48.                                 item = buffItem; //символ самой короткой группы = символу группы, которую только что считали
  49.                         }
  50.                         buffLength = 1; //начинаем подсчёт кол-ва группы заново
  51.                         buffItem = str1[i]; //смена символа
  52.                 }
  53.                
  54.         }
  55.  
  56.         for (int i = 0; i < length; i++)
  57.         {
  58.                 cout << item;
  59.         }
  60.  
  61.         cout << endl;
  62.  
  63.  
  64.  
  65.         system("pause");
  66.         return 0;
  67. }
Parsed in 0.014 seconds