Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
504 Въведение в програмирането със C#<br />
се получава нещо като краен автомат (state machine), който<br />
разпознава e-mail адреси. Всички намерени e-mail адреси трябва да се<br />
проверят дали имат непразен получател, непразен хост, домейн с<br />
дължина между 2 и 4 букви, както и да не започват или завършват с<br />
точка.<br />
Друг по-лесен подход за тази задача е да се раздели текста по всички<br />
символи, които не са букви и точки и да се проверят така извлечените<br />
"думи" дали са валидни e-mail адреси чрез опит да се раздробят на<br />
непразни части: , , , отговарящи на изброените<br />
вече условия.<br />
20. Използвайте RegEx.Match(…) с подходящ регулярен израз. Алтернативният<br />
вариант е да си реализирате автомат, който има състояния<br />
OutOfDate, ProcessingDay, ProcessingMonth, ProcessingYear и обработвайки<br />
текста побуквено да преминавате между състоянията според<br />
поредната буква, която обработвате. Както и при предходната задача,<br />
можете предварително да извадите всички "думи" от текста и след това<br />
да проверите кои от тях съответстват на шаблона за дата.<br />
21. Раздробете текста на думи и проверете всяка от тях дали е палиндром.<br />
22. Използвайте масив от символи char[65536], в който ще отбелязвате<br />
колко пъти се среща всяка буква. Първоначално всички елементи на<br />
масива са нули. След побуквена обработка на входния низ можете да<br />
отбележите в масива коя буква колко пъти се среща. Например ако се<br />
срещне буквата 'A', ще се увеличи с единици броят срещания в масива<br />
на индекс 65 (Unicode кодът на 'A'). Накрая с едно сканиране на масива<br />
може да се отпечатат всички ненулеви елементи (като се преобразуват<br />
char, за да се получи съответната буква) и и прилежащия им брой<br />
срещания.<br />
23. Използвайте хеш-таблица (Dictionary), в която пазите за<br />
всяка дума от входния низ колко пъти се среща. Прочетете в Интернет<br />
за класа System.Collections.Generic.Dictionary. С едно<br />
обхождане на думите можете да натрупате в хеш-таблицата<br />
информация за срещанията на всяка дума, а с обхождане на хештаблицата<br />
можете да отпечатате резултата.<br />
24. Можете да сканирате текста отляво надясно и когато текущата буква<br />
съвпада с предходната, да я пропускате, а в противен случай да я<br />
долепяте в StringBuilder.<br />
25. Използвайте статичния метод Array.Sort(…).<br />
26. Сканирайте текста побуквено и във всеки един момент пазете в една<br />
променлива дали към момента има отворен таг, който не е бил затворен<br />
или не. Ако срещнете "", излизайте от режим "отворен таг". Ако срещнете буква,<br />
я добавяйте към резултата, само ако програмата не е в режим "отворен<br />
таг". След затваряне на таг може да добавяте по един интервал, за да<br />
не се слепва текст преди и след тага.