Вопрос № 93224: Здравствуйте, Эксперты!
Нужно создать программу, которая считает в вводимой строке количество слов, количество слов с определённой буквой(Б, б) и количество слов в последнем слове.
Программу я создала, но она считает слова только по одному пр...
Вопрос № 93.224
Здравствуйте, Эксперты!
Нужно создать программу, которая считает в вводимой строке количество слов, количество слов с определённой буквой(Б, б) и количество слов в последнем слове.
Программу я создала, но она считает слова только по одному пробелу, а пробелов между словами может быть неограниченное количество.
Например Privet PC, здесь два слова
а если написать Privet PC-то программа выдаст 10 слов вместо двух.
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Иванова Наталья Сергеевна!
Добавте
begin
IF KP > 0 THEN inc(ks);
kp:=0;
end
и слова будут считатся правильно.
Удачи!
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Как вариант решения, попробуйте сначала прогнать всю строку вот такой строчкой:
*см. приложение.
После чего в строке s1 будет строка s, в которой не будут встречаться подряд по 2 пробела. Все пробелы, идущие подряд, будут заменены на один пробел.
А дальше обычный подсчёт.
Можно совместить эту строчку с Вашим циклом. Подумайте, как.
Приложение:
Ответ отправил: Omickron (статус: 3-ий класс)
Ответ отправлен: 28.06.2007, 16:55
Отвечает: Denisss
Здравствуйте, Иванова Наталья Сергеевна!
См. пример в приложении.
Чтобы вводить русские символы в Паскале, нужно переключить раскладку клавиатуры и вводить (раскладка в DOS меняется обычно нажатием Ctrl+Shift - если нажимаете левые кнопки, то переключение происходит в англ. раскладку, если правые кнопки - в русскую. Также возможно, что раскладка будет меняться по нажатию Alt+Shift или той комбинации, которая установлена по умолчанию в системе. Иногда раскладка меняется при нажатии двух Shift). Либо можно воспользоваться каким-нибудь блокнотом, который может сохранять как OEM
(DOS) текст (обычный блокнот этого не умеет).
Отвечает: BlackRaider
Здравствуйте, Иванова Наталья Сергеевна!
 óñëîâèå ïîïðîáóéòå èçìåíèòü çà ìåñòî:
if (s[i]=' ') then
begin
inc(ks);
kp:=0;
end
else
inc(kp);
end;
ïîñòàâèòü óñëîâèå ò.å. ñìîòðèì ïðåäûäóùèé ñèìâîë:
if (s[i]=' ')and (i<>1) then
begin
if (s[i-1]<>' ') then
begin
inc(ks);
kp:=0;
end
end
else
inc(kp);
end;
Ответ отправил: BlackRaider (статус: 1-ый класс)
Ответ отправлен: 29.06.2007, 08:42