Volkswagen Club Tatarstan. Пробки онлайн. Проверка штрафов ГИБДД. Общение с ГИБДД. Руководство по ремонту и эксплуатации VAG. Авто новости.
http://vwrt.ru/forum/

вниманию программистов
http://vwrt.ru/forum/viewtopic.php?f=18&t=576
Страница 1 из 1

Автор:  workspace [ Чт ноя 17, 2011 4:33 pm ]
Заголовок сообщения:  вниманию программистов

очень нужна помощь в реализации такой программки на С#:

Разработка консольной программы для обработки группы текстовых файлов на предмет составления словаря из неповторяющихся лексем, входящих в эти файлы. Программа получает в качестве аргумента командной строки путь к каталогу с файлами, формирует словарь, добавляя новые слова в файл словаря. Результаты текущего сеанса работы, т.е. аргумент словаря с новыми лексемами, в лексикографическом порядке выводятся в окно стандартной консоли приложения.

если по-русски: есть несколько текстовых файлов - словарей. надо собрать из них один так, чтобы слова не повторялись, т.е. отсеить дублирующие и создать уникальный список.

Автор:  Comma [ Чт ноя 17, 2011 5:58 pm ]
Заголовок сообщения:  Re: вниманию программистов

CS, консоль = Жесткие требования

Автор:  danya [ Чт ноя 17, 2011 6:17 pm ]
Заголовок сообщения:  Re: вниманию программистов

сишарп ненужен)
на баше могу нада?:)
если словарь текстовый файл и каждое слово в одной строке
то алгоритм примерно такой
читаем по строчно файл и заносим в динамический массив
при этом каждое новое слово ищем в массиве если если совпадений ненайдено
то слово добавляется

быть может медленно зато просто и эффективно)

Автор:  workspace [ Чт ноя 17, 2011 6:42 pm ]
Заголовок сообщения:  Re: вниманию программистов

danya писал(а):
сишарп ненужен)
на баше могу нада?:)
если словарь текстовый файл и каждое слово в одной строке
то алгоритм примерно такой
читаем по строчно файл и заносим в динамический массив
при этом каждое новое слово ищем в массиве если если совпадений ненайдено
то слово добавляется

быть может медленно зато просто и эффективно)


фишка именно в том, что это чудо надо на C# смастерить...
кстати, для ламеров, а "баш" это что?))

Автор:  danya [ Чт ноя 17, 2011 6:53 pm ]
Заголовок сообщения:  Re: вниманию программистов

http://ru.wikipedia.org/wiki/Bash

ну так сначала для одного файла по ключевым фразам что я написал пытаемся написать
а уже потом с аргументами и с несколькими файлами

я канешно попробую сам написать, но только после запиливания криптографии

Автор:  workspace [ Чт ноя 17, 2011 7:04 pm ]
Заголовок сообщения:  Re: вниманию программистов

danya писал(а):
ну так сначала для одного файла по ключевым фразам что я написал пытаемся написать
а уже потом с аргументами и с несколькими файлами

я канешно попробую сам написать, но только после запиливания криптографии


эммм.... а можно по-русски?)))

Автор:  danya [ Чт ноя 17, 2011 7:12 pm ]
Заголовок сообщения:  Re: вниманию программистов

ну кароче сначала пиши
чтение одного файла и занесение данных в динамический массив
затем уже пишем так чтобы слова не повторялись т.е. сравниваем прочтённое с данными что есть в динамическом массиве

для начала хватит
в гугле ищем реализацию по словам "динамический массив", "построчное чтение файла"
хоть какие то знания программирования есть?:)

Автор:  workspace [ Чт ноя 17, 2011 7:13 pm ]
Заголовок сообщения:  Re: вниманию программистов

danya писал(а):
ну кароче сначала пиши
чтение одного файла и занесение данных в динамический массив
затем уже пишем так чтобы слова не повторялись т.е. сравниваем прочтённое с данными что есть в динамическом массиве

для начала хватит
в гугле ищем реализацию по словам "динамический массив", "построчное чтение файла"
хоть какие то знания программирования есть?:)


у меня нет)) это подруга курсовик написать не может, она вроде чуток парит))

Автор:  danya [ Чт ноя 17, 2011 7:19 pm ]
Заголовок сообщения:  Re: вниманию программистов

от атцтой)
у нас такие лабораторки( а не курсачи

Автор:  workspace [ Чт ноя 17, 2011 7:22 pm ]
Заголовок сообщения:  Re: вниманию программистов

danya писал(а):
от атцтой)
у нас такие лабораторки( а не курсачи


суть наверно та же, тока без пояснилки и в меньших объемах

Автор:  Comma [ Чт ноя 17, 2011 8:33 pm ]
Заголовок сообщения:  Re: вниманию программистов

А разве при написании курсача ограничивают использование языка? Или она на околоинформатика учится?

Автор:  Comma [ Чт ноя 17, 2011 8:39 pm ]
Заголовок сообщения:  Re: вниманию программистов

danya писал(а):
при этом каждое новое слово ищем в массиве если если совпадений ненайдено
то слово добавляется

быть может медленно зато просто и эффективно)


прикинь в словаре 100 000 слов))) последнее слово это яяя или zzzz )))

Автор:  danya [ Чт ноя 17, 2011 8:53 pm ]
Заголовок сообщения:  Re: вниманию программистов

Comma писал(а):
danya писал(а):
при этом каждое новое слово ищем в массиве если если совпадений ненайдено
то слово добавляется

быть может медленно зато просто и эффективно)


прикинь в словаре 100 000 слов))) последнее слово это яяя или zzzz )))

ну это лучше чем сразу писать в файл, но всё ограничивается размером оперативки
можно канешно использовать какой неть хэш поиск тогда будет быстро
но зачем?:)
если уж и заморачиваться то можно прикрутить базу данных будет быстро и эффективно :)

Автор:  Comma [ Чт ноя 17, 2011 9:42 pm ]
Заголовок сообщения:  Re: вниманию программистов

А в файл сразу не запишешь, Надо ж еще сортировать.)))

Автор:  danya [ Чт ноя 17, 2011 10:06 pm ]
Заголовок сообщения:  Re: вниманию программистов

Comma писал(а):
А в файл сразу не запишешь, Надо ж еще сортировать.)))

ну почему же
можно сначала записать а потом отсортировать файл
а можно после записи нового слова проводить сортировку

Автор:  Comma [ Чт ноя 17, 2011 11:21 pm ]
Заголовок сообщения:  Re: вниманию программистов

Я сs не знаю. Там действительно есть сортировка файла без загрузки в память?

Автор:  Comma [ Чт ноя 17, 2011 11:22 pm ]
Заголовок сообщения:  Re: вниманию программистов

Если тема актуально могу скинуть код, написанный мной корявым почерком на C# ))

Автор:  workspace [ Пт ноя 18, 2011 1:00 am ]
Заголовок сообщения:  Re: вниманию программистов

Comma писал(а):
Если тема актуально могу скинуть код, написанный мной корявым почерком на C# ))

очень даж актуально

Автор:  Comma [ Пт ноя 18, 2011 1:28 am ]
Заголовок сообщения:  Re: вниманию программистов

Правда ты не уточнил условия задачи - в каком виде хранятся данные.
Куда слать? Может прям здесь выложить

Автор:  danya [ Пт ноя 18, 2011 2:06 am ]
Заголовок сообщения:  Re: вниманию программистов

Comma писал(а):
Если тема актуально могу скинуть код, написанный мной корявым почерком на C# ))

ну я незнаю есть ли там такие методы
посути нельзя отсортировать не загружая
но помоему всякие методы пирамидальной сортировки и т.д. могут помочь с сортировкой большого объёма данных
да и ктомуже для огромных объёмов инфы базы данных придумали не?:)
а код сюда выкладывай на позыреть)

Автор:  Comma [ Пт ноя 18, 2011 8:56 am ]
Заголовок сообщения:  Re: вниманию программистов

danya писал(а):
Comma писал(а):
Если тема актуально могу скинуть код, написанный мной корявым почерком на 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;
         }
         // */

      }

      static void CheckInVectorOrNot (string [] arr, string CurStr, ref bool exist)
      {
         int i;
         exist = false;
         for (i=0; i<arr.Length; i++)
         {
            if (arr[i]==CurStr)
            {
               exist = true;
               break;
            }
         }
      }

      static void Main(string[] args)
      {
         
         //
         // TODO: Add code to start application here
         //

         string FullPath;
         string st;
         int LineCount = 0;
         string [] lines = new string [0]; //= File
         string ForExit;
         bool WasAddedToVector = false;

         //LineCount = 0;

         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.ReadLine();
         }
         SortStringVector(ref lines , 0);

         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();

            FullPath = null;
            //FullPath = "";
            st       = null;
            ForExit  = null;
            
            lines = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            
            //using (System.IO.File.WriteAllLines(FullPath, lines));
            Console.WriteLine("Succesfully saved");
            Console.ReadLine();
         }
         else
         {
            goto Cycle;
         }



         

      }
   }
}


я тестил только на txt файлах где одно слово (или словосочетание) на отдельной строке расположено + размеры файлов маленькие были у мну

Автор:  workspace [ Пт ноя 18, 2011 12:12 pm ]
Заголовок сообщения:  Re: вниманию программистов

Comma писал(а):
я тестил только на txt файлах где одно слово (или словосочетание) на отдельной строке расположено + размеры файлов маленькие были у мну


пасиба! будем пробовать)

Автор:  workspace [ Вт ноя 29, 2011 1:23 pm ]
Заголовок сообщения:  Re: вниманию программистов

сдалась на пипёрку!) что-то доделала-переделала в итоге всё гуд. Comma, еще раз огромное спасибо!

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/