Проверить, можно ли из двух предложений составить заданное слово - C#
Формулировка задачи:
Доброго времени суток. Условие задания: Даны два предложения. Выяснить, можно ли из каждого из них составить заданное слово, вывести номера символов, если возможно.
Не получается чтобы нормально проверка шла, ибо для одного предложения оно работает нормально, когда с другим не прокатывает, а стоит поменять в While знак на "<=" как оно наоборот для второго норм работает, а для первого нет. Я уже кучу всего перепробовал, подскажите пожалуйста как исправить.
Вот то, что я сделал:
using System; using System.Linq; namespace ConsoleApplication1 { class Program { static void Main() { string s; string p; Console.WriteLine("Введите первое предложение: "); s = Console.ReadLine(); Console.WriteLine(); Console.WriteLine("Введите второе предложение: "); p = Console.ReadLine(); s.Replace(" ", ""); p.Replace(" ", ""); Console.WriteLine("---------------------------"); Console.Write("Введите слово: "); string sl = Console.ReadLine(); Console.WriteLine("---------------------------"); bool ok = false; bool d = false; bool allo = false; int k = 0; int g = 0; for (int i = 0; i < s.Length; i++) { for (int j = 0; j < sl.Length; j++) { if (sl[j] == s[i]) { do { k++; } while (k < sl.Length); if (k == sl.Length) { ok = true; break; } } } } for (int j = 0; j < p.Length; j++) { for (int i = 0; i < sl.Length; i++) { if (sl[i] == p[j]) { do { g++; } while (g < sl.Length); if (g == sl.Length) { d = true; break; } } } } if (ok == true && d == true) { allo = true; } Console.WriteLine("Результат: "); if (allo == true) Console.WriteLine("Можно составить слово!"); else { Console.WriteLine("Нельзя составить слово!"); } Console.ReadKey(); } } }
Решение задачи: «Проверить, можно ли из двух предложений составить заданное слово»
textual
Листинг программы
using System; using System.Linq; namespace _ { class Program { static void Main() { string str1 = "sf sfsf sdf s fsdfsfs fs fsd fsd fs fsd fhe ll o wo rsfsdf l d"; string str2 = "hello, it's a wonderful wonderful world"; string find = "hello world"; PrintFindChar(str1, find); Console.WriteLine(); PrintFindChar(str2, find); Console.ReadKey(true); } private static void PrintFindChar(string str, string find) { var simbols = str.Select((c, i) => new { ch = c, index = i }).ToLookup(c => c.ch, c => c.index); var result = simbols.Where(s => find.Contains(s.Key)); if (result.Aggregate(0, (i, j) => i + j.Count()) >= find.Length) Console.WriteLine(string.Join(Environment.NewLine, result.Select(r => $"{r.Key} => {string.Join(" ", r.Select(i => i))}"))); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д