Как реализовать?

  • Автор темы Автор темы aleksfid
  • Дата начала Дата начала

aleksfid

Client
Регистрация
17.12.2015
Сообщения
448
Реакции
21
Баллы
18
Есть переменная которая постоянно меняет значение.
Как сделать если в ней 3 раза одно и тоже значение, то в другую переменную выводилось yes иначе no
Например:
4 5 44 3 4 48 5 4 3 2 7 5 9 0 так тут нет подряд трех одинаковых значений, то выводим no в другую переменную
25 3 28 9 0 0 3 45 5 5 5 так тут есть подряд три одинаковых значения ( подряд три пятерки), то выводим yes в другую переменную
 
нужно разбивать строку по пробелу в список, или дргим способом. Дальше перебирать список, проверяя равно ли текущее значение следующему. Если равно - апаем счетчик повторений. Если он стал равен 3 - заканчиваем перебор, пишем ЕС. Если меньше 3 - берем след строку. Если текущее значение не равно следующему - обнуляем счетчик повторений и берем след. строку. Если успешно дошли до конца проверки - значит 3 повтора не нашли
 
нужно разбивать строку по пробелу в список, или дргим способом. Дальше перебирать список, проверяя равно ли текущее значение следующему. Если равно - апаем счетчик повторений. Если он стал равен 3 - заканчиваем перебор, пишем ЕС. Если меньше 3 - берем след строку. Если текущее значение не равно следующему - обнуляем счетчик повторений и берем след. строку. Если успешно дошли до конца проверки - значит 3 повтора не нашли
Можно подробнее? Пока не пойму. А еще лучше сниппетом бы.
 
строку 25 3 28 9 0 0 3 45 5 5 5 разбиваем, например, по регулярке \d+ и кладём все совпадения в список.
имеем список
25
3
28
9
0
0
3
45
5
5
5

Берем нулевую(25) и первую(3) строку. Сравниваем. Если равны - апаем какой-то счетчик на +1. Если не равны - обнуляем счетчик. Теперь берем первую(3) и вторую(двадцать восемь) строку. Делаем тоже самое. Крутим так, пока не дойдем до конца списка, значит ответ НОУ, или пока наш счетчик не будет равен 3, значит ответ ЕС.
Не знаю, куда еще подробнее
 
строку 25 3 28 9 0 0 3 45 5 5 5 разбиваем, например, по регулярке \d+ и кладём все совпадения в список.
имеем список
25
3
28
9
0
0
3
45
5
5
5

Берем нулевую(25) и первую(3) строку. Сравниваем. Если равны - апаем какой-то счетчик на +1. Если не равны - обнуляем счетчик. Теперь берем первую(3) и вторую(двадцать восемь) строку. Делаем тоже самое. Крутим так, пока не дойдем до конца списка, значит ответ НОУ, или пока наш счетчик не будет равен 3, значит ответ ЕС.
Не знаю, куда еще подробнее
Строки нет. Переменная показатель и имеет всегда разные значения. Она то 3 то 7 то 133, но она не должна 3 раза подряд иметь одно и то же, если же имеет, значит кое что случилось. Вот мне и надо этот случай поймать.
 
Строки нет. Переменная показатель и имеет всегда разные значения. Она то 3 то 7 то 133, но она не должна 3 раза подряд иметь одно и то же, если же имеет, значит кое что случилось. Вот мне и надо этот случай поймать.
ну значит держи значение переменной в какой-то дополнительной переменной. Когда переменная получает новое значение - сравниваешь её с дополнительной. Если равны - апаешь счетчик. не равны - обнуляешь. Если счетчик равен трем - делаешь, что должен. Перед получением нового значения обязательно сохраняешь текущее значение в эту дополнительную переменную
 
  • Оценить
Реакции: aleksfid
Код:
Развернуть Свернуть Копировать
public static string Check(string text)
        {
            //string text = "25 3 28 9 0 0 3 45 5 5 5";
            string[] temp = text.Split(' ').ToArray();
            var result = temp.Where(str => temp.Count(s => s == str) == 3).Distinct();

            if (result.Count() != 0)
            {
                return "yes";
            }
            return "no";

        }
 
  • Оценить
Реакции: sentinel
Код:
Развернуть Свернуть Копировать
public static string Check(string text)
        {
            //string text = "25 3 28 9 0 0 3 45 5 5 5";
            string[] temp = text.Split(' ').ToArray();
            var result = temp.Where(str => temp.Count(s => s == str) == 3).Distinct();

            if (result.Count() != 0)
            {
                return "yes";
            }
            return "no";

        }
Строки нет. Переменная показатель и имеет всегда разные значения. Она то 3 то 7 то 133, но она не должна 3 раза подряд иметь одно и то же, если же имеет, значит кое что случилось. Вот мне и надо этот случай поймать.
Метод дока сработал.
 
Код:
Развернуть Свернуть Копировать
public static string Check(string text)
        {
            //string text = "25 3 28 9 0 0 3 45 5 5 5";
            string[] temp = text.Split(' ').ToArray();
            var result = temp.Where(str => temp.Count(s => s == str) == 3).Distinct();

            if (result.Count() != 0)
            {
                return "yes";
            }
            return "no";

        }
string[] temp = text.Split(' '); - так правильнее, вызывать на базе массива ToArray() не имеет смысла
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)