Насоки за съставяне на списък LIST от .txt файл и сортиране по параметри: азбучен ред, дължина на думата.
Здравейте скъпи колеги,
Карам Programing basics C Sharp и се обръщам към "батковците и каките" от горното ниво за да ми дадете насока как да си направя:
- Списък от 500 думи,
- да го заредя в конзолата от файл .txt ,
- да си го преработя по желани параматреи: брой букви, и после по алфабетичен ред и после да го разделя на 10 отделни списъка от по 50 думи.
- По възможност да се обединят в един списък.
Това не е задание от университета, а реален казус от работата ми. Учител съм по английски език и трябва да си преработя един голям списък за нуждите на класа. Сега видях, че списъка, който си вкарвам на ръка в програма за флашкарти е от миналата година.
Имам списък и от тази година - искам да си го програмирам, а не по бабешката, да броя букви и да правя 100 списъка.
Не моля да ми свършите черната работа и да мина тънко, а само за насоки. Трябваше да е част от портфолиото ми с авторски проекти за следващата година, но ми се налага да се ориентирам бързичко за около месец.
С две думи. Само някой линкове към форума и StackOverflow ще са златна помощ.
Streams по скоро ни но io.file. и file read и тн. Това му е от лосална машина.
Поне така го разбирам аз. Иначе колегато го и описал общо взето. С file четеш file от адреса в pc-то,после щом си само на pb ще ти е доста трудно. Linq lists ще те объркат. И с файлове е малко кофита ако решиш да записваш ако не си следиш dispose и usage. По скоро дай някакъв fakе file подобен на тозш който искаш да оправиш. И да ти нахвърляме нещо.
Дай ни някакъв пример какво искаш да постигнеш ? В какъв формат са ти входните данни ? Как трябва да изглежда output-a ?/
---------------
Входни данни са списък от думи в .txt
1. leaf, листо - всяка дума на нов ред без нумерацията 500 реда.
2. Umbrella, чадър
3. Cat, котка
4. impossible, невъзможно.
Outputa трябва да изглежда така.
Трябва да се подредят по дължина на думата, после ако може по азбучен ред.
3. Cat, котка
1. Leaf, листо
2. Umbrella, чадър
4. Impossible, невъзможно
StreamReader и StreamWriter ми харесаха като вариант.
Обикновено имам около 900MB свободна RAM. от 4GB. Компютърчето е слабичко.
Големина на файла около 16 KB
Вкарай си текста в една екселска таблица и после си я сортирай, променяй, разделяй и т.н. както си искаш. Става само с няколко кликвания на мишката
Като цяло не е нещо сложно за обработка, ако входът винаги ще е от формата: "ключ, стойност", можеш да имаш проблеми с encoding-а заради кирилицата. Всички думи ли ще са уникални ?
Ето възможно най-простата имплементация за която се сетих и написах за 5 мин.: Link. С твойте примерни данни работи коректно.
Изисква се вече файлът да е създаден и пътят да е правилен. Ако формата на входните данни не е [english, български] няма да работи. Естествено, може да се избегне. Имплементацията, която съм ти дал чете ред по ред от файла и добавя в асоциятивен масив, след което ги сортира. Не е нужно да се тревожиш за ресурси. Обикновенно проблем ще е ако заредиш голям текстов файл защото ще зареди цялото му съдържание в рам паметта.
Точно вчера, се сетих за този вариант. Импортирах си думите в ексела от един сайт. Пуснах функция string lenght LEN (A) в съседна колонка и си подредих по новия параметър, 5 минути!
Ако думите в текстовия файл са разделени със запетая, директно можеш да импортнеш в ексел, като посочиш, че разделителя е запетаята (или табулация, или някакъв друг символ). Накрая можеш да запазиш файла отново в текстов формат (.txt) Това е най-лесния начин да си форматираш файла. Ако искаш обаче да се занимаваш с програмиране, това също не е лош проект за начало.
Good luck!
Благодаря за насоките.
Файла е UNICODE .TXT (16408 bytes) С табулаторно разделение.
Файла всъщност не е голям, но трябва ли да се задава променлива за всяка дума или може да се работи със списъка като с цял елемент?