Написал программу, но мне надо чтобы буква "а" выделялась красным лишь в последнем слове...Подскажите что можно сделать.
Program textus; Uses CRT; const z = ['a']; Var text, s1 : string; i: byte; BEGIN Write ('Введите текст: '); Readln (text); For i:=1 To length(text) Do If text[i] In z Then begin highvideo; TextColor(4); write(text[i]); end else begin TextColor(7); write(text[i]); end; Readkey; END.
Заранее спасибо!
-Volvo-
27.02.2011 16:50
Сначала пройти по тексту от конца к началу, и найти (и запомнить) позицию последнего разделителя (что там ты считаешь словом? Чем слова разделяются? Только пробелами? Значит, пробела), а уж потом - идти от начала, и "если буква - та, что нужна И позиция больше, чем позиция последнего разделителя", то выделять красным.
Sav93
27.02.2011 16:54
О, Боже...наверное займусь этим уже завтра, а то сегодня голова не варит) Даже не могу осознать что ты написал...Но спасибо и на этом.
volvo
27.02.2011 17:19
Что ж тут сложного?
Readln (text); { Читаешь строку }
p := 0; i := length(text); repeat { если буква - разделитель (я проверяю только на пробелы, надо - добавь другие символы), то запомнить, где она находится } if text[i] in [' '] then p := i else dec(i); until (p > 0) or (i = 0); { Из этого цикла только 2 выхода: если дошли до начала строки и i = 0, или если нашли последний разделитель, и p <> 0 }
{ Сначала печатаем все, что было перед последним словом } for i := 1 to p do write(text[i]);
{ а теперь - в последнем слове проверяем наличие нужного символа } for i := p + 1 to length(text) do begin if text[i] in z then begin highvideo; textcolor(red); end else begin normvideo; textcolor(lightgray); end; write(text[i]); end;
В конце программы не забудь установить серый цвет для вывода... Это правило хорошего тона...
Sav93
27.02.2011 18:47
Ага...спасибо...все понял, я просто както и не подумал про repeat, все думал как бы через for найти последнее слово. Спасибо большое!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.