NotAComputerScienceStudent Ответов: 1

Как сравнить элементы двух массивов


В основном я хочу иметь возможность сравнивать элементы массивов и определять, похожи ли какие-либо элементы.

Приведенный ниже код работает только иногда, когда слово имеет пять букв, таких как "привет и привет", он выдает 7, когда слово имеет 4 буквы, такие как "привет и ад", он выдает 6, и он выдает 2, когда только 2 похожи.

Что я уже пробовал:

if(GuessLenght == WordLenght)
            {
                //Check Each Element

                foreach(char Letter in ActualChar)
                {
                    foreach(char letter in GuessChar)
                    {
                        if(Letter == letter)
                        {
                            LetterGuessed++;
                        }
                        else
                        {
                            
                        }
                    }
                }
            }

1 Ответов

Рейтинг:
10

jimmson

Просто использовать for вместо foreach, затем сравните с помощью индекса символов:

for (int i = 0; i < WordLenght; i++)
{
    if (ActualChar[i] == GuessChar[i]) LetterGuessed++;
}


NotAComputerScienceStudent

Но если я сравниваю ehello и hello, то он говорит, что 3 правильны, когда он должен сказать 5

jimmson

Да, но я предполагал, что вы будете использовать свое условие "если(GuessLenght == WordLenght)" во-первых, что будет ложным.
Это не сложно сделать так, как вы только что предложили, но вам нужен другой алгоритм - просто подсчитайте количество символов в каждом слове и сравните их.

NotAComputerScienceStudent

ладно

Maciej Los

Не обязательно..., если только порядок букв не важен. Алгоритм, который вы предлагаете, вернет 6 для набора: {ehello, ollehe}.
;)