|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.01.2013, 10:17 | #1 |
Пользователь
Регистрация: 06.07.2012
Сообщений: 80
|
Оптимизация программы
Задача
На вход программы подается текст на английском языке, заканчивающийся точкой (другие символы “.” в тексте отсутствуют). Требуется написать программу, которая будет определять и выводить на экран английскую букву, встречающуюся в этом тексте чаще всего, и количество там таких букв. Строчные и прописные буквы при этом считаются не различимыми. Если искомых букв несколько, то программа должна выводить на экран первую из них по алфавиту. Например, пусть файл содержит следующую запись: It is not a simple task. Yes! Чаще всего здесь встречаются буквы I, S и T (слово Yes в подсчете не учитывается, так как расположено после точки). Следовательно, в данном случае программа должна вывести два символа, разделенных пробелом: I 3 Мое решение: Код:
Как это исправить и есть ли возможность улучшить и оптимизировать программу? |
20.01.2013, 10:32 | #2 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Это потому что у вас I и i только на бумаге в задании неразличимы, а в программе этого нигде не прописано. Поэтому букв s (3) больше чем букв i (2).
Попробуйте это: Код:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
20.01.2013, 10:37 | #3 |
Пользователь
Регистрация: 06.07.2012
Сообщений: 80
|
|
20.01.2013, 11:03 | #4 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Во-первых, read(c) не будет считывать последовательно набор символов с клавиатуры - это можно трассировкой с брекпойнтом на этом месте проверить. тут нужно что-то навроде readkey. Но это только в оригинальном паскале доступно, насколько я понимаю, а аналогов в консоли Дельфи, например, я не знаю
Во-вторых, lowercase - строковая функция, о чем я как-то забыл упомянуть. То есть само преобразование в нижний регистр будет идти через строку: Код:
Типа вот такого (плюс небольшая оптимизация - зачем сохранять максимальное значение, если оно уже есть в массиве?): Код:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Последний раз редактировалось Sciv; 20.01.2013 в 11:07. |
20.01.2013, 11:10 | #5 |
Пользователь
Регистрация: 06.07.2012
Сообщений: 80
|
спс, разобрался
|
20.01.2013, 17:59 | #6 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
|
20.01.2013, 18:19 | #7 | |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Цитата:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
|
20.01.2013, 19:05 | #8 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
|
20.01.2013, 19:34 | #9 | |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Цитата:
Вот посимвольно вводить не пробовал (типа "символ" - "энтер" - "снова символ" и тд).
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оптимизация программы | Семоха Валерий | Помощь студентам | 1 | 26.05.2012 14:04 |
Оптимизация программы | 0479 | Помощь студентам | 7 | 09.03.2011 17:15 |
Оптимизация программы | Lenya | Помощь студентам | 2 | 05.01.2011 18:56 |
Оптимизация программы!!! | $T@LKER | Общие вопросы Delphi | 10 | 08.08.2010 21:23 |