Строки, одинаковые буквы |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Строки, одинаковые буквы |
Drenchick |
Сообщение
#1
|
Гость |
вводим слова через пробел. найти количество слов которые вмещают 3 буква "а"
|
TS* |
Сообщение
#2
|
Пионер Группа: Пользователи Сообщений: 71 Пол: Мужской Реальное имя: Max Репутация: 0 |
вводим слова через пробел. найти количество слов которые вмещают 3 буква "а" var |
volvo |
Сообщение
#3
|
Гость |
TS*, не-а...
Введи строку 'dda abbaa defaaa noneeaaaa', и посмотри что выводит программа... (под Турбо-Паскалем вообще виснет, если не завершить строку пробелом...) Я бы делал так: var |
Bokul |
Сообщение
#4
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Вот чуть-чуть подравил код TS*.
Тепер программа правильно находит число слов, но всеравно виснет, если строка не кончается пробелом, хотя я добавил проверку на конец строки... Почему? Код var s:string; i,count_a,count_words:byte; begin readln(s); i:=0; count_a:=0; count_words:=0; while i<=length(s) do begin inc(i); if s[i]='a' then begin inc(count_a); repeat inc(i); if s[i]='a' then inc(count_a); until (s[i]=' ') or (i=length(s)); {Добавлен оператор or и еще одно условие} if count_a=3 then inc(count_words);{Перемещено} count_a:=0; dec(i); end; end; writeln('Koluchestvo slov s 3 bykvamu a = ',count_words); end. Сообщение отредактировано: Bokul - -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Malice |
Сообщение
#5
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
|
volvo |
Сообщение
#6
|
Гость |
все равно виснет, если строка не кончается пробелом, хотя я добавил проверку на конец строки... Почему? А потому, что здесь: if s[i]='a' then begin ... ты уменьшаешь i безусловно (!!!)... А если i уже достигло значения конца строки? Сделай так: ... и все будет работать... |
Bokul |
Сообщение
#7
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата А не проще ли в начале добавить строчку "if s[length(s)]<>' ' then s:=s+' ';" ? ;) Если длина строки уже максимальная, то ничего не получится -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Текстовая версия | 6.10.2024 9:07 |