Как сделать повторяющиеся разные вычисления в массиве c #

Я хотел бы получить цифры из текстового поля пользователя. нет никаких ограничений на стоимость. для символов каждого числа я сначала умножу на 2, 4 и 6, а затем сложу их вместе. например, если пользователь вводит «12», то 1 * 2 + 2 * 4 = 10. если пользователь вводит «1111», ответ будет рассчитываться следующим образом: 1 * 2 + 1 * 4 + 1 * 6 + 1 * 2 = 12. Сначала я установил число в массиве, но затем я застрял в том, как заставить его умножать разные значения (2, 4 и 6) каждый раз, когда каждый цикл no вызывается для цикла. Возможно ли добиться этого в C #? Есть ли примеры, которые я могу узнать по этому поводу?

введите описание изображения здесь

Всего 2 ответа


Или, если у вас есть цикл OCD , вот решение Linq

var result = input.Select((c, i) => array[i % array.Length] * (c - Ɔ')).Sum();

Демо Здесь

Предпосылка

  1. input ваша строка
  2. array ваших чисел
  3. Select каждый char и индекс в строке (c,i)
  4. Получите остаток после деления i % array.Length для каждого элемента i % length будет циклически проходить по вашему массиву
  5. Получите значение int из char , (c - '0') (представьте таблицу ascii )
  6. * они вместе
  7. Sum итоги

Дополнительные ресурсы

Выберите (IEnumerable, Func)

Проецирует каждый элемент последовательности в новую форму путем включения индекса элемента.

Остаток оператора%

Оператор остатка% вычисляет остаток после деления его левого операнда на его правый операнд.

Обновить

Тем не менее, мне интересно, что если входные данные также являются массивом (например, {11,12} в этом случае они будут рассчитываться следующим образом: 11 * 2 + 12 * 4 = 70)

var input = "34 5 234 54";

var result = input.Split(' ')
                  .Select((c, i) => array[i % array.Length] * int.Parse(x))
                  .Sum();

//int[] numDigitsArray // 1, 2 ,3 ,4

int[] twoFourSixArray = {2, 4, 6};
int current = 0;
int res = 0;
while (current < numDigitsArray.Length)  
{
    res += twoFourSixArray[current % twoFourSixArray.Length] * numDigistsArray[current];
    current++;
}

Есть идеи?

10000