Проверка, чтобы увидеть символ, эквивалентный моему значению int - PullRequest
0 голосов
/ 03 сентября 2018

Хорошо, я мог бы не объяснить это в меру своих возможностей, но я новичок, и я хотел бы сделать кусок кода, который делает это: у вас есть строка, и вам нужно найти каждый гласный в ней и умножить позицию каждого гласного в строке на ее позицию в алфавите и сложить все суммы вместе пример: steve: имеет 2 гласных, позиция первого e - 3, позиция алфавита - 5. и позиция второго алфавита и строка 5 итого сумма 5 * 3 + 5 * 5 = 40 это то, что я сделал. ИДК, что делать сейчас или как к нему подойти

 var vowels = new char[] {'a', 'e', 'i', 'o', 'u', 'y', 'A','E','I', 'O', 'U','Y'};
        var chars = new List<char>();
        List<int> indexes = new List<int>();

        Console.WriteLine("Write something : ");
        var input =  Console.ReadLine();

        int index;
        foreach (var vowel in vowels)
        {
            if (input.Contains(vowel))
            {
                index = input.IndexOf(vowel);
                indexes.Add(index + 1);
                chars.Add(vowel);
            }

        }

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Рассмотрим этот подход:

using System;
using System.Linq;
using System.Collections.Generic;

namespace Whatever
{
    class Program
    {
        static void Main(string[] args)
        {
            var vowels = new Dictionary<string, int>(5, StringComparer.OrdinalIgnoreCase) { { "a", 1 }, { "e", 5 }, { "i", 9 }, { "o", 15 }, { "u", 21 } };

            Console.WriteLine("Write something : ");
            var input = Console.ReadLine();

            var sum = input.Select((value, index) => new { value, index })
                .Sum(x =>
                    {
                        vowels.TryGetValue(x.value.ToString(), out var multiplier);
                        return (x.index + 1) * multiplier;
                    });

            Console.ReadLine();
        }
    }
}

Select проецирует исходную строку как анонимный тип с char и включенным в него индексом.

Sum проверяет, является ли строка гласной, и, если это так, умножает позицию (index + 1) на позицию в алфавите (с vowels).

vowels не учитывает регистр, поэтому «A» и «a» обрабатываются одинаково.

Если компилятор жалуется на out var, тогда используйте:

int multiplier = 0;
vowels.TryGetValue(x.value.ToString(), out multiplier);
return (x.index + 1) * multiplier;

вместо.

0 голосов
/ 03 сентября 2018

Я понял это прямо здесь

for (int i = 0; i < indexes.Count; i++)
        {
            sumofone += indexes[i] * (char.ToUpper(chars[i]) - 64);
        }
0 голосов
/ 03 сентября 2018

Вы можете сделать это (ссылка от здесь ):

    var vowels = new char[] { 'a', 'e', 'i', 'o', 'u' };

    Console.WriteLine("Write something : ");
    var input = Console.ReadLine().ToLower();

    int total = 0;
    for (int temp = 1; temp <= input.Length; temp++)
    {
        if (vowels.Contains(input[temp - 1]))
        {
            total += temp * (char.ToUpper(input[temp -1]) - 64);
        }
     }

     Console.WriteLine("The length is " + total);
...