IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> String
Sav93
сообщение 27.02.2011 16:42
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской
Реальное имя: Василий

Репутация: -  0  +


Написал программу, но мне надо чтобы буква "а" выделялась красным лишь в последнем слове...Подскажите что можно сделать.


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.


Заранее спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-Volvo-
сообщение 27.02.2011 16:50
Сообщение #2


Гость






Сначала пройти по тексту от конца к началу, и найти (и запомнить) позицию последнего разделителя (что там ты считаешь словом? Чем слова разделяются? Только пробелами? Значит, пробела), а уж потом - идти от начала, и "если буква - та, что нужна И позиция больше, чем позиция последнего разделителя", то выделять красным.
 К началу страницы 
+ Ответить 
Sav93
сообщение 27.02.2011 16:54
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской
Реальное имя: Василий

Репутация: -  0  +


О, Боже...наверное займусь этим уже завтра, а то сегодня голова не варит) Даже не могу осознать что ты написал...Но спасибо и на этом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.02.2011 17:19
Сообщение #4


Гость






Что ж тут сложного?

     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
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской
Реальное имя: Василий

Репутация: -  0  +


Ага...спасибо...все понял, я просто както и не подумал про repeat, все думал как бы через for найти последнее слово. Спасибо большое!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"