SHARE
TWEET

6,2!!!!!!

a guest Nov 19th, 2019 73 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top