Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2013, 14:26   #1
AlexP777
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 33
По умолчанию программа со string

Помогите реализовать задачу:
Цитата:
В заданной строке символов, состоящей из слов, разделенных пробелами, подсчитать количество слов, заканчивающихся буквой А.
должен быть цикл для подсчета? думал как то сделать на length, но оно то считает длинную всей строки.

помогите.
AlexP777 вне форума Ответить с цитированием
Старый 31.03.2013, 14:36   #2
Arhangel7
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 90
По умолчанию

простой перебор строки
заводим доп переменную тип string
определяем длинну задонной строки
считываем каждый запис. символ и добовляем его в доп перем, пока не встретим пробел - вот и слово, смотрим его длинну, читаем его последний символ, если буква А, то счетчик увеличиваем на 1 и тд
как-то так
Arhangel7 вне форума Ответить с цитированием
Старый 31.03.2013, 15:01   #3
AlexP777
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 33
По умолчанию

со стрингами мало работал, можно конкретно сам код что бы разобрался?
AlexP777 вне форума Ответить с цитированием
Старый 31.03.2013, 15:03   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
со стрингами мало работал
а тут со "стрингами" и не надо, надо со строками
Цитата:
можно конкретно сам код что бы разобрался?
Контакты в профиле - договоримся!
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 31.03.2013, 15:24   #5
Wadduh
Пользователь
 
Аватар для Wadduh
 
Регистрация: 26.03.2013
Сообщений: 16
По умолчанию

Не проверял, но должно работать..
Код:
for i:=1 to length(str) do 
   if (str[i]=' ') and (str[i-1]='a') then count:=count+1;
Читаем строку посимвольно..если встречаем пробел, и предыдущий символ это "а", то увеличиваем счетчик.
Работает при условии, что пробел между словами всегда только один..если нет, то нужно реализовать обратный цикл до первого встретившегося символа и проверять уже его..
Или немного по другому..
Код:
for i:=1 to length(str) do
   if (str[i]='a') and (str[i+1]=' ') then count:=count+1;
Поясню..
Если встречаем "а" и следующий символ - пробел, то увеличиваем счетчик.
Еще нужно отдельно реализовать провереку последнего слова строки..
Wadduh вне форума Ответить с цитированием
Старый 31.03.2013, 21:28   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Wadduh, а Вас не смущает, что в первом примере i-1 выйдет на нулевой символ строки,
а во втором примере, i+1 (при i=Length(str) ) - выйдет ЗА пределы самой строки?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.03.2013, 21:42   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
а Вас не смущает, что в первом примере i-1 выйдет на нулевой символ строки,а во втором примере, i+1 (при i=Length(str) ) - выйдет ЗА пределы самой строки?!
Фигня
В первом варианте нам вообще ничем нехорошим это не грозит.
Во втором варианте все компиляторы(которыми богаты) молчат.

Меня дак больше смущает имя самой строки..
Poma][a вне форума Ответить с цитированием
Старый 31.03.2013, 22:04   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Меня дак больше смущает имя самой строки..
Допустимое имя. Но не рекомендуется. Хотя бы чтоб самому не путаться

Цитата:
Фигня
Не фигня, а некорректный стиль кода. Кроме того - один лишний цикл. Для быстрых компов конечно, незначительно.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 31.03.2013, 22:07   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Кроме того - один лишний цикл.
Какой цикл? Может все-таки итерация?
Цитата:
Не фигня
Там же смайлик был
Poma][a вне форума Ответить с цитированием
Старый 31.03.2013, 22:10   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Фигня
Ошибаешся. Это далеко не фигня. Это скрытый баг, который может вылится в богатейшую проблему.
Я бы искал так:
Код:
i:=pos(' a',s);
while i<>0 do begin
 inc(k);
 delete(s,1,i+2);
 i:=pos(' a',s);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
std::string и System::String iisus92 Помощь студентам 1 25.12.2012 10:44
string-char-wchar_t-char-string чето потерял magog7 Общие вопросы C/C++ 0 08.08.2011 20:21
Программа поиска в строке (string) самого длинного симметричного слова [Паскаль] Henkel Помощь студентам 2 14.12.2010 20:41
Программа на СИ++, используя функции работы с файлами и функции <string.h> Аня Popova Фриланс 9 13.09.2010 15:52
Как получить адрес String строки или преобразовать String madboy4ik Общие вопросы по Java, Java SE, Kotlin 6 15.01.2010 11:57