Найти слова , которых нет в словаре - C#
Формулировка задачи:
Всем доброго времени суток, помогите решить следующую задачу: Дан текст и словарь, найти слова, которых нет в словаре.
Решение задачи: «Найти слова , которых нет в словаре»
textual
Листинг программы
using System;
namespace MinimumMultiCoreApp
{
class Program
{
//Глобальные данные - видны всем потокам
static int[] bigArray; //Большой массив
static int P; //количество потоков
static string[] slovar = {"Привет","как","дела"};//словарь
static string text;//текст
static int size = GetWordCount(text);//считаем сколько слов в массиве
static string[] mins; //массив, в который потоки будут сохранять результат. 0 поток в mins[0], 1- в mins[1] итд
// Подсчёт числа слов в строке...
static int GetWordCount(String str)
{
int nCount = 0;
bool alpha = false;
for (int i = 0; i < str.Length; i++)
{
if (str[i] == ' ' || str[i] == '\t')
{
alpha = false;
}
else
{
if (alpha == false)
{
alpha = true;
nCount++;
}
}
}
return nCount;
}
//Функция потока
//параметр param мы используем как номер потока
static void threadFunc(object param)
{
//Получить параметр и преобразовать в int
int nomerPotoka = (int)param;
//Размер данных обработки каждым потоком
int chunk = size / P;
//С какого элемента массива начинать
int start = nomerPotoka * chunk;
string[] split = text.Split(new Char[] { ' ', ',', '.', ':', '\t' });
string slovo = null;
for (var j = 0; j < slovar.Length; j++)
{
for (var i = 0; i < split.Length; i++)
{
if (slovar[j] != split[i])
slovo = split[i];
}
}
//Сохранить свой минимум
//mins[nomerPotoka] = slovo;
Console.WriteLine(nomerPotoka.ToString() + " нашел минимум = " + slovo.ToString());
}
//Главная функция
static void Main(string[] args)
{
//Вводим size - количество элементов
Console.WriteLine("Введите текст:");
text = (string)Console.ReadLine();
//Создаем массив из size элементов типа int
bigArray = new int[size];
//Вводим P- число потоков
Console.WriteLine("Введите число потоков:");
P = int.Parse(Console.ReadLine());
//Запомнили текущее время
DateTime time = DateTime.Now;
//Создаем массив из P потоков
System.Threading.Thread[] threads = new System.Threading.Thread[P];
//Создаем массив из P элементов, куда потоки будут сохранять минимумы
//mins = new int[P];
//Создаем и стартуем P потоков
for (int i = 0; i < P; i++)
{
//Создаем поток и сохраняем его в массив. Передаем ему функцию threadFunc, которая и будет выполняться в потоке
threads[i] = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(threadFunc));
//Старт потока и передача в параметр его номер
threads[i].Start(i);
}
//Ждем завершения всех потоков
for (int i = 0; i < P; i++)
{
threads[i].Join();//ждать i-й поток
}
//Время как разница времен до и после подсчета
DateTime time1 = DateTime.Now;
Console.WriteLine("Время работы: " + time1.Subtract(time).ToString() );
Console.ReadKey();
}
}
}