Выполнение операций через определенное количество циклов

214
27 июня 2017, 21:06

Как сделать так, чтобы через определенное количество циклов выполнялось "что-то"?

Например у меня есть цикл do .. while(), в нем происходят определенные итерации, и я хочу, чтобы через 3 цикла к определенной переменной i прибавлялось число 2.

Answer 1

Используйте оператор %:

void Main()
{
    var data = new[] { 3, 9, 11, 13, 17, 21 };
    this.Something(data);
}
public void Something(IEnumerable<int> data)
{
    var pos = 0;
    foreach (var element in data)
    {
        if (pos % 3 == 0)
        {
            Console.WriteLine($"pos = {pos}, element = {element}, doubled = {2 * element}");
        }
        else
        {
            Console.WriteLine($"pos = {pos}, element = {element}");
        }
        pos++;
    }
}

Выведет:

pos = 0, element = 3, doubled = 6
pos = 1, element = 9
pos = 2, element = 11
pos = 3, element = 13, doubled = 26
pos = 4, element = 17
pos = 5, element = 21

Здесь 3 -- это величина шага (через три цикла), а ноль -- это смещение.

Можно например поменять условие на pos % 3 = 1 и получить такой вариант:

pos = 0, element = 3
pos = 1, element = 9, doubled = 18
pos = 2, element = 11
pos = 3, element = 13
pos = 4, element = 17, doubled = 34
pos = 5, element = 21

А для pos == 2 -- такой:

pos = 0, element = 3
pos = 1, element = 9
pos = 2, element = 11, doubled = 22
pos = 3, element = 13
pos = 4, element = 17
pos = 5, element = 21, doubled = 42

Принцип понятен?

READ ALSO
сохранение цикла

сохранение цикла

Три цикла от 1 до 3Необходимо сохранить данные в тхт, но не все данные

214
Не создается задача в планировщике для текущего пользователя в Windows-домене

Не создается задача в планировщике для текущего пользователя в Windows-домене

Задача: сделать автозагрузку программы с админскими правами (установлена в Program Files)Программа использует Long Polling для установления длительного...

217
EntityFramework + Firebird как подключить - C#

EntityFramework + Firebird как подключить - C#

Добрый день! Уже целый день пытаюсь подружить Firebird с EntytiFramework и не получаетсяДелал всё по инструкции https://habrahabr

201
Битые ссылки на сайте [требует правки]

Битые ссылки на сайте [требует правки]

Есть сайт на котором присутствуют битые ссылки(которые ведут на 404), как с помощью C# найти эти ссылки и удалить адрес куда они ведут? То есть...

212