Зарегистрирован: Пн мар 14, 2011 5:46 pm Сообщения: 1120
Авто: Golf IV -> Эвок
очень нужна помощь в реализации такой программки на С#:
Разработка консольной программы для обработки группы текстовых файлов на предмет составления словаря из неповторяющихся лексем, входящих в эти файлы. Программа получает в качестве аргумента командной строки путь к каталогу с файлами, формирует словарь, добавляя новые слова в файл словаря. Результаты текущего сеанса работы, т.е. аргумент словаря с новыми лексемами, в лексикографическом порядке выводятся в окно стандартной консоли приложения.
если по-русски: есть несколько текстовых файлов - словарей. надо собрать из них один так, чтобы слова не повторялись, т.е. отсеить дублирующие и создать уникальный список.
сишарп ненужен) на баше могу нада?:) если словарь текстовый файл и каждое слово в одной строке то алгоритм примерно такой читаем по строчно файл и заносим в динамический массив при этом каждое новое слово ищем в массиве если если совпадений ненайдено то слово добавляется
Зарегистрирован: Пн мар 14, 2011 5:46 pm Сообщения: 1120
Авто: Golf IV -> Эвок
danya писал(а):
сишарп ненужен) на баше могу нада?:) если словарь текстовый файл и каждое слово в одной строке то алгоритм примерно такой читаем по строчно файл и заносим в динамический массив при этом каждое новое слово ищем в массиве если если совпадений ненайдено то слово добавляется
быть может медленно зато просто и эффективно)
фишка именно в том, что это чудо надо на C# смастерить... кстати, для ламеров, а "баш" это что?))
ну кароче сначала пиши чтение одного файла и занесение данных в динамический массив затем уже пишем так чтобы слова не повторялись т.е. сравниваем прочтённое с данными что есть в динамическом массиве
для начала хватит в гугле ищем реализацию по словам "динамический массив", "построчное чтение файла" хоть какие то знания программирования есть?:)
Зарегистрирован: Пн мар 14, 2011 5:46 pm Сообщения: 1120
Авто: Golf IV -> Эвок
danya писал(а):
ну кароче сначала пиши чтение одного файла и занесение данных в динамический массив затем уже пишем так чтобы слова не повторялись т.е. сравниваем прочтённое с данными что есть в динамическом массиве
для начала хватит в гугле ищем реализацию по словам "динамический массив", "построчное чтение файла" хоть какие то знания программирования есть?:)
у меня нет)) это подруга курсовик написать не может, она вроде чуток парит))
при этом каждое новое слово ищем в массиве если если совпадений ненайдено то слово добавляется
быть может медленно зато просто и эффективно)
прикинь в словаре 100 000 слов))) последнее слово это яяя или zzzz )))
ну это лучше чем сразу писать в файл, но всё ограничивается размером оперативки можно канешно использовать какой неть хэш поиск тогда будет быстро но зачем?:) если уж и заморачиваться то можно прикрутить базу данных будет быстро и эффективно
Если тема актуально могу скинуть код, написанный мной корявым почерком на C# ))
ну я незнаю есть ли там такие методы посути нельзя отсортировать не загружая но помоему всякие методы пирамидальной сортировки и т.д. могут помочь с сортировкой большого объёма данных да и ктомуже для огромных объёмов инфы базы данных придумали не?:) а код сюда выкладывай на позыреть)
Если тема актуально могу скинуть код, написанный мной корявым почерком на C# ))
ну я незнаю есть ли там такие методы посути нельзя отсортировать не загружая но помоему всякие методы пирамидальной сортировки и т.д. могут помочь с сортировкой большого объёма данных да и ктомуже для огромных объёмов инфы базы данных придумали не?:) а код сюда выкладывай на позыреть)
поэтому я и не вижу смысла записывать в файл, потом загрузить с него и , отсортировав кинуть оббратно в файл ))
БД то придумали, но меня обучить использовать БД они (те кто придумал) забыли
С# VS 2003 )))
Код:
using System; using System.Text; using System.IO; using System.Collections.Specialized;
namespace TextReader { /// <summary> /// Summary description for Class1. /// </summary> class Class1 { /// <summary> /// The main entry point for the application. /// </summary>
//public const int BubMthd = 0; // another methods if exist
[STAThread]
static void IncreaseArrLength(ref string[] arr, int delta) // increase the length of dynamic array if its need to add new elements to this array // delta is an increment of the length of the given array { string[] tmp; if (arr != null) { tmp = new string[arr.Length + delta]; Array.Copy(arr, 0, tmp, 0, arr.Length); } else { tmp = new string[delta]; int inLrn = tmp.Length; } arr = tmp; }
static void Swap(int FElem, int SecElem, ref string [] arr) // change places of two adjacent elements { string tmp; tmp = arr[FElem]; arr[FElem] = arr[SecElem]; arr[SecElem] = tmp; }
static void BubbleSort(ref string [] arr) // methof of sort called as Bubble sort { int i, j; int max = arr.Length;
for (i = 1; i < max; ++i) for (j = 0; j < max - i; ++j) if (arr[j].CompareTo( arr[j + 1] ) > 0) // if j is bigger { Swap(j, j + 1, ref arr); // then j+1 is emerge }
}
static void SortStringVector (ref string [] arr, int SortID) { // /* switch (SortID) { case 0 : BubbleSort(ref arr); break; default : Console.WriteLine("It is impossible to get here"); break; } // */
Cycle : { Console.WriteLine ("Please, enter path to text file"); FullPath = Console.ReadLine(); //FullPath = A1;
if (File.Exists(FullPath)) { //StreamReader sr = File.OpenText(FullPath); //, Encoding.UTF8); StreamReader sr = new System.IO.StreamReader(@FullPath,Encoding.GetEncoding("windows-1251")); while ((st=sr.ReadLine())!=null) { //Console.WriteLine(st); if (LineCount!=0) { CheckInVectorOrNot(lines,st,ref WasAddedToVector); } else { WasAddedToVector = false; }
if (WasAddedToVector!=true) { IncreaseArrLength(ref lines,1); lines[LineCount] = st; LineCount++; } } sr.Close(); } else { Console.WriteLine("File not found!!"); }
Console.WriteLine("For Exit enter 'E' else other word to Continue"); ForExit = Console.ReadLine(); //lines.
if ( (ForExit)==("E") || (ForExit)==("e")) { Console.WriteLine("Enter path to save text file"); FullPath = Console.ReadLine(); //A2; // StreamWriter sw = new StreamWriter(@FullPath, false); foreach (string line in lines) { if (line.CompareTo("")!=0) { sw.WriteLine(line); //sw.asdf; } } sw.Close();
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения