Здравствуйте, я пишу программу, которая должна вывести все слова, которые можно составить из введенного пользователем слова (например, пользователь вводит слово “абажур”, а программа выводит слова “арба”, “раб”, “бар” и так далее) Однако возникла проблема с тем, что программа использует одну и ту же букву в веденном слове несколько раз для производного слова. Подскажите, как можно исправить данную проблему. Вот код:
string word = Console.ReadLine(); // запрашиваем слово
List<string> output = new List<string>();
string[] readText = File.ReadAllLines(path);
for(int i=0;i<readText.Length;i++)
{
bool f=true;
for(int j=0;(j<readText[i].Length)&&(f==true) ;j++)
{
if(word.Contains(readText[i][j]))
{
f = true;
}
else
{
f = false;
}
}
if (f == true)
{
output.Add(readText[i]);
}
}
for(int i =0;i<output.Count;i++)
{
Console.WriteLine(output[i]); // вывод списка на экран
}
Например, при вводе того же слова “абажур” программа выводит и слово “барраж”, в введенном слове содержится лишь одна буква “р”, а программа выводит и те слова, в которых эта буква используется не один раз. Readtext - это массив строк, в каждой ячейке которого содержится по одному слову из русского языка
В Вашем условии нужно сравнивать кол-во одинаковых букв в двух словах, а не просто принадлежность - например, разности между длинами сравниваемых слов и полученными из них удалением символом функцией Trim(Char). Как-то так: