![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 06.07.2012
Сообщений: 80
|
![]()
Задача
На вход программы подается текст на английском языке, заканчивающийся точкой (другие символы “.” в тексте отсутствуют). Требуется написать программу, которая будет определять и выводить на экран английскую букву, встречающуюся в этом тексте чаще всего, и количество там таких букв. Строчные и прописные буквы при этом считаются не различимыми. Если искомых букв несколько, то программа должна выводить на экран первую из них по алфавиту. Например, пусть файл содержит следующую запись: It is not a simple task. Yes! Чаще всего здесь встречаются буквы I, S и T (слово Yes в подсчете не учитывается, так как расположено после точки). Следовательно, в данном случае программа должна вывести два символа, разделенных пробелом: I 3 Мое решение: Код:
Как это исправить и есть ли возможность улучшить и оптимизировать программу? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
![]()
Это потому что у вас I и i только на бумаге в задании неразличимы, а в программе этого нигде не прописано. Поэтому букв s (3) больше чем букв i (2).
Попробуйте это: Код:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 06.07.2012
Сообщений: 80
|
![]() |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
![]()
Во-первых, read(c) не будет считывать последовательно набор символов с клавиатуры - это можно трассировкой с брекпойнтом на этом месте проверить. тут нужно что-то навроде readkey. Но это только в оригинальном паскале доступно, насколько я понимаю, а аналогов в консоли Дельфи, например, я не знаю
![]() Во-вторых, lowercase - строковая функция, о чем я как-то забыл упомянуть. То есть само преобразование в нижний регистр будет идти через строку: Код:
Типа вот такого (плюс небольшая оптимизация - зачем сохранять максимальное значение, если оно уже есть в массиве?): Код:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Последний раз редактировалось Sciv; 20.01.2013 в 11:07. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 06.07.2012
Сообщений: 80
|
![]()
спс, разобрался
|
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
![]() |
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
![]() Цитата:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
|
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
![]() |
![]() |
![]() |
![]() |
#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 |