Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <ctype.h>
- using namespace std;
- int main()
- {
- char str[150];
- cout << "Vvedite stroku" << endl;
- gets_s(str);
- cout << "Stroka: ";
- puts(str);
- int length = strlen(str); //переменная, равная длине введенной строки. Потом- длина самой короткой группы
- int curLength = 0; //длина текущей группы //объявление переменной, в которую будет заноситься длина группы
- char item = str[0], curItem = str[0]; //1) символ(0 или 1) самой короткой группы //2)символ группы, которую сейчас читаем
- int i, n = strlen(str); // i- счетчик в цикле, n= кол-ву символов в строке
- for (i = 0; i < strlen(str); i++)
- {
- if (str[i] != '1' && str[i] != '0') //проверяем, состоит ли строка только из 1 и 0
- {
- cout << "String is invalid" << endl;
- system("pause");
- return 0;
- }
- }
- for (i = 0; i < strlen(str); i++) //идем по строке
- {
- if (str[i] == curItem && i != strlen(str) - 1) //если символ равен предыдущему и не является предпоследним
- {
- curLength++; //увеличиваем длину группы
- }
- else
- {
- if (i == strlen(str) - 1) //если символ предпоследний
- {
- if (curItem == str[i]) //и равен предыдущему
- curLength++; //то +1 к длине этой группы
- else //не равен предыдущему
- {
- curLength = 1; //т.к. не равен предыдущему, то длина группы = 1
- curItem = str[i]; //смена символа
- }
- }
- if (curLength < length) //не выполнение первого ифа: символ не равен предыдущему. Если длина только что подсчитанной группы <= длине самой короткой группы
- {
- length = curLength; //присвоение длине самой короткой группы значения, равному только что подсчитанной
- item = curItem; //символ самой короткой группы = символу группы, которую только что считали
- }
- curLength = 1; //начинаем подсчёт кол-ва группы заново
- curItem = str[i]; //смена символа
- }
- }
- cout << "Samaya korotkaya gruppa: ";
- for (i = 0; i < length; i++)
- {
- cout << item;
- }
- cout << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement