Консультация № 177619
03.04.2010, 01:16
0.00 руб.
0 6 1
Добрый вечер уважаемые эксперты, требуется ваша помощь в написании следующих программ:
1)Дана последовательность русских слов (строчными буквами) разделенных запятыми (не менее 10-и слов). Вывести на экран все звонкие согласные буквы (б, в, г, д, ж, з, л, м, н, р), которые входят в каждое нечётное слово и не входят ни в одно четное слово.
2)Дана последовательность из 10-и русских слов. Вывести на печать слова, в которых первая буква слова встречается в нём ещё раз.
Буду признателен за комментарии к программам. Заранее очень благодарен.

Обсуждение

Неизвестный
03.04.2010, 02:42
общий
это ответ
Здравствуйте, Xrom1989.
Решение второй задачи в приложении.

Приложение:
{
Дана последовательность из 10-и русских слов.
Вывести на печать слова, в которых первая буква слова встречается в нём ещё раз.
}
Uses
Crt;
Const
MaxCount = 10;
TestA: Array[1..MaxCount] of String =
('каждый', 'охотник', 'желает', 'знать', 'где', 'сидит', 'фазан', 'раритет', 'укус', 'выреверберировал');
Var
st, first: String;
i: Byte;
begin
ClrScr; {очистка экрана}
Writeln('Found:'); {вывод титульного сообщения о найденных словах}
for i := 1 to MaxCount do begin {просмотреть все слова из последовательности}
st := TestA[i]; {отсадить слово в отдельную переменную}
first := st[1]; {уточнить символ с которого слово начинается}
st[1] := '#'; {поставить на его место символ заведомо не встречающийся в русском языке}
if pos(first, st) > 0 then {если после произведенной замены в слове найдется символ стоявший на первой позиции}
Writeln(' - ', TestA[i]); {вывести это слово последовательности на экран}
end;
Writeln('Done. Press any key...'); {предупредительное сообщение о том, что работа завершена}
readkey; {ожидание от пользователя нажатия клавиши}
end.
5
Ставлю 5 баллов. Все понятно и развернуто=)
давно
Академик
320937
2216
03.04.2010, 15:14
общий
Andrew Kovalchuk:
Вопрос автора звучит так:
Вывести на печать слова, в которых первая буква слова встречается в нём ещё раз.
В строгой трактовке это означает еще ровно один раз. Ваша программа решает задачу "..хотя бы еще один раз".
Неизвестный
03.04.2010, 15:44
общий
Xrom1989:
Вас действительно устроило решение, предложенное Andrew Kovalchuk? С учетом замечания lamed.
Если нет, то поправим
Неизвестный
03.04.2010, 16:47
общий
=) меня вполне устраивает решение, предложенное Andrew Kovalchuk.
Неизвестный
03.04.2010, 17:04
общий
lamed:
Цитата: lamed
В строгой трактовке это означает еще ровно один раз. Ваша программа решает задачу "..хотя бы еще один раз".
Для этого достаточно внести в код минимальные исправления (заменить красный код на зеленый):
Код:
i: Byte;
i, p: Byte;
....
if pos(first, st) > 0 then {если после произведенной замены в слове найдется символ стоявший на первой позиции}
Writeln(' - ', TestA[i]); {вывести это слово последовательности на экран}

p := pos(first, st);
if (p > 0) then begin {если после произведенной замены в слове найдется символ стоявший на первой позиции}
st[p] := '#';
if (pos(first, st) < 1) then {и к тому же только один}
Writeln(' - ', TestA[i]); {вывести это слово последовательности на экран}
end;

Неизвестный
03.04.2010, 19:08
общий
спасибо большое=)
Форма ответа