Использование yield return - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, нужна ваша помощь. Задание: Необходимо реализовать функцию ZipSum с использованием yield return, которая принимает на вход две последовательности целых чисел и возвращает последовательность, состоящую из попарных сумм их элементов. Можно считать, что входные последовательности одинаковой длины. Дан такой код:
public static void Main()
{
    Console.WriteLine(string.Join(" ", ZipSum(new[] { 1 }, new[] { 0 })));
    Console.WriteLine(string.Join(" ", ZipSum(new[] { 1, 2 }, new[] { 1, 2 })));
    Console.WriteLine(string.Join(" ", ZipSum(new int[0], new int[0])));
    Console.WriteLine(string.Join(" ", ZipSum(new[] { 1, 3, 5 }, new[] { 5, 3, -1 })));
}
И дана заготовка функции, которую необходимо дописать:
private static IEnumerable<int> ZipSum(IEnumerable<int> first, IEnumerable<int> second)
{
    var e1 = first.GetEnumerator();
    var e2 = second.GetEnumerator();
    while(...)
        ...
}
Ожидаемый вывод: 1 2 4 6 6 4

Решение задачи: «Использование yield return»

textual
Листинг программы
private static IEnumerable<int> ZipSum(IEnumerable<int> first, IEnumerable<int> second)
{
    var e1 = first.GetEnumerator();
    var e2 = second.GetEnumerator();
    while (e1.MoveNext())
    {
        e2.MoveNext();
        yield return e1.Current + e2.Current;
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5