Не могу реализовать алгоритм с FileStream - C#
Формулировка задачи:
Здравствуйте. Не могу реализовать алгоритм с помощью чтения из файла (FileStream). Помогите пожалуйста.
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.IO;
- using System.Text;
- using System.Threading.Tasks;
- namespace К
- {
- class Program
- {
- static void Main(string[] args)
- {
- string[] Slova= { "привет","пока","ок","вет" };//Слова которые нужно найти в строке
- string Stroka = "приветпока";//Строка
- List<int> Sostoyaniya = FindAllSostoyaniya(Stroka, Slova);
- int count = 3;
- foreach (var item in Sostoyaniya)
- {
- Console.WriteLine(" Слово " + Slova[count] + " начинается с " + item + " позиции. ");
- count--;
- }
- Console.ReadLine();
- }
- private const int Stroka = 20;
- private const int Alphavit = 32;
- private static int[] Out = new int[Stroka];
- private static int[] FF = new int[Stroka];
- private static int[,] GF = new int[Stroka, Alphavit];
- private static int Algoritm(string[] Words, char NizkiyChar = 'а', char NaibolshiyChar = 'я')
- {
- Out = Enumerable.Repeat(0, Out.Length).ToArray();
- FF = Enumerable.Repeat(-1, FF.Length).ToArray();
- for (int i = 0; i < Stroka; ++i)
- {
- for (int j = 0; j < Alphavit; ++j)
- {
- }
- }
- int Sostoyaniya = 1;
- for (int i = 0; i < Words.Length; ++i)
- {
- string KeyWord = Words[i];
- int StartSostoyanie = 0;
- for (int j = 0; j < KeyWord.Length; ++j)
- {
- int c = KeyWord[j] - NizkiyChar;
- if (GF[StartSostoyanie, c] == -1)
- {
- GF[StartSostoyanie, c] = Sostoyaniya++;
- }
- StartSostoyanie = GF[StartSostoyanie, c];
- }
- Out[StartSostoyanie] |= (1 << i);
- }
- for (int c = 0; c < Alphavit; c++)
- {
- if (GF[0, c] == -1)
- {
- GF[0, c] = 0;
- }
- }
- List<int> q = new List<int>();
- for (int c = 0; c <= NaibolshiyChar - NizkiyChar; ++c)
- {
- if (GF[0, c] != -1 && GF[0, c] != 0)
- {
- FF[GF[0, c]] = 0;
- q.Add(GF[0, c]);
- }
- }
- while (Convert.ToBoolean(q.Count))
- {
- int Sostoyanie = q[0];
- q.RemoveAt(0);
- for (int c = 0; c <= NaibolshiyChar - NizkiyChar; ++c)
- {
- if (GF[Sostoyanie, c] != -1)
- {
- int Otkaz = FF[Sostoyanie];
- while (GF[Otkaz, c] == -1)
- {
- Otkaz = FF[Otkaz];
- }
- Otkaz = GF[Otkaz, c];
- FF[GF[Sostoyanie, c]] = Otkaz;
- Out[GF[Sostoyanie, c]] |= Out[Otkaz];
- q.Add(GF[Sostoyanie, c]);
- }
- }
- }
- return Sostoyaniya;
- }
- private static int FindNextSostoyaniya(int StartSostoyanie, char NextVvod, char NizkiyChar = 'а')
- {
- int Otvet = StartSostoyanie;
- int c = NextVvod - NizkiyChar;
- while (GF[Otvet, c] == -1)
- {
- Otvet = FF[Otvet];
- }
- return GF[Otvet, c];
- }
- public static List<int> FindAllSostoyaniya(string Text, string[] KeyWord, char NizkiyChar = 'а', char NaibolshiyChar = 'я')
- {
- Algoritm(KeyWord, NizkiyChar, NaibolshiyChar);
- int StartSostoyanie = 0;
- List<int> Value = new List<int>();
- for (int i = 0; i < Text.Length; ++i)
- {
- StartSostoyanie = FindNextSostoyaniya(StartSostoyanie, Text[i], NizkiyChar);
- if (Out[StartSostoyanie] == 0)
- continue;
- for (int j = 0; j < KeyWord.Length;j++)
- {
- if (Convert.ToBoolean(Out[StartSostoyanie] & (1 << j)))
- {
- Value.Insert(0, i - KeyWord[j].Length + 1);
- }
- }
- }
- return Value;
- }
- }
- }
Решение задачи: «Не могу реализовать алгоритм с FileStream»
textual
Листинг программы
- NaibolshiyChar - NizkiyChar
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д