Loading...
MarinParov avatar MarinParov 5 Точки

Насоки за съставяне на списък LIST от .txt файл и сортиране по параметри: азбучен ред, дължина на думата.

Здравейте скъпи колеги, 

Карам Programing basics C Sharp  и се обръщам към "батковците и каките" от горното ниво за да ми дадете насока как да си направя:
 - Списък от 500 думи,
-  да го заредя в конзолата от файл .txt , 
-  да си го преработя по желани параматреи: брой букви, и после по алфабетичен ред и после да го разделя на 10 отделни списъка от по 50 думи.
- По възможност да се обединят в един списък.  

Това не е задание от университета, а реален казус от работата ми. Учител съм по английски език и трябва да си преработя един голям списък за нуждите на класа. Сега видях, че списъка, който си вкарвам на ръка в програма за флашкарти е от миналата година.
Имам списък и от тази година - искам да си го програмирам, а не по бабешката, да броя букви и да правя 100 списъка.


Не моля да ми свършите черната работа и да мина тънко, а само за насоки. Трябваше да е част от портфолиото ми с авторски проекти за следващата година, но ми се налага да се ориентирам бързичко за около месец. 

С две думи. Само някой линкове към форума и StackOverflow ще са златна помощ. 

Тагове:
0
Module: C# Advanced 25/01/2019 15:29:09
VasilKotsev avatar VasilKotsev 830 Точки
Best Answer

Трябват ти познания по Stream-ове (потоци), някои основни структури от данни (List<T>, масиви), функционално програмиране, LINQ и методи. Можеш да ползваш StreamReader и да четеш ред по ред от текстов документ(можеш и наведнъж, но при по-големи документи ще береш ядове защото се зареждат директно в рам паметта). След което си изкарваш нужните методи за обработка на текста и със StreamWriter го пишеш към нов документ.

0
25/01/2019 15:24:56
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

Streams по скоро ни но io.file. и file read и тн. Това му е от лосална машина.

Поне така го разбирам аз. Иначе колегато го и описал общо взето. С file четеш file от адреса в pc-то,после щом си само на pb ще ти е доста трудно. Linq lists ще те объркат. И с файлове е малко кофита ако решиш да записваш ако не си следиш dispose и usage. По скоро дай някакъв fakе file подобен на тозш който искаш да оправиш. И да ти нахвърляме нещо.

0
MarinParov avatar MarinParov 5 Точки

Дай ни някакъв пример какво искаш да постигнеш ? В какъв формат са ти входните данни ? Как трябва да изглежда 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

0
kolioi avatar kolioi 641 Точки

Вкарай си текста в една екселска таблица и после си я сортирай, променяй, разделяй и т.н. както си искаш. Става само с няколко кликвания на мишката smiley

0
VasilKotsev avatar VasilKotsev 830 Точки

Като цяло не е нещо сложно за обработка, ако входът винаги ще е от формата: "ключ, стойност", можеш да имаш проблеми с encoding-а заради кирилицата. Всички думи ли ще са уникални ?

Ето възможно най-простата имплементация за която се сетих и написах за 5 мин.: Link. С твойте примерни данни работи коректно.

Изисква се вече файлът да е създаден и пътят да е правилен. Ако формата на входните данни не е [english, български] няма да работи. Естествено, може да се избегне. Имплементацията, която съм ти дал чете ред по ред от файла и добавя в асоциятивен масив, след което ги сортира. Не е нужно да се тревожиш за ресурси. Обикновенно проблем ще е ако заредиш голям текстов файл защото ще зареди цялото му съдържание в рам паметта.

0
25/01/2019 22:02:26
MarinParov avatar MarinParov 5 Точки

Точно вчера, се сетих за този вариант. Импортирах си думите в ексела от един сайт. Пуснах функция string lenght LEN (A) в съседна колонка и си подредих по новия параметър, 5 минути!

0
29/01/2019 13:15:18
kolioi avatar kolioi 641 Точки

Ако думите в текстовия файл са разделени със запетая, директно можеш да импортнеш в ексел, като посочиш, че разделителя е запетаята (или табулация, или някакъв друг символ). Накрая можеш да запазиш файла отново в текстов формат (.txt) Това е най-лесния начин да си форматираш файла. Ако искаш обаче да се занимаваш с програмиране, това също не е лош проект за начало.

Good luck!

0
MarinParov avatar MarinParov 5 Точки

Благодаря за насоките. 

Файла е UNICODE .TXT (16408 bytes) С табулаторно разделение. 

Файла всъщност не е голям, но трябва ли да се задава променлива за всяка дума или може да се работи със списъка като с цял елемент?

0
25/01/2019 16:05:18
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.