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

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

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

> чтение файла , выделение слов
сообщение
Сообщение #1


Новичок
*

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

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


Условие такое:
С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 700 символов (длина строки текста не должна превышать 70 символов).
Имя файла должно иметь расширение DAT. Написать программу, которая:
- выводит текст на экран дисплея;
- по нажатию произвольной клавиши поочередно выделяет в тексте заданные слова (за-данные слова вводить с клавиатуры).


--------------------
...Купи слона, ну и что что все говорят продай слона...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
Closed Topic Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






HeX, ну, цветом так цветом blum.gif
uses crt;

const
alpha = ['a'..'z', 'A'..'Z'];
var
ft: text;
s: string;

a, b: array[1 .. 50] of string;

line_count, n, i,j,f:integer;
ch:byte;

p, len: byte;
start: integer;
st: string;
isgray: boolean;

begin
Assign(ft,'text700.dat');
reset(ft);

clrscr;

line_count := 0;
while not eof(ft) do begin
readln(ft,s); writeln(s);
inc(line_count);
a[line_count]:=s;
end;

close(Ft);

write('n='); readln(n);
writeln('new word - new line');
for i:=1 to n do readln(b[i]);

clrscr;
for i:=1 to line_count do begin
p := 0; st := a[i];

for j := 1 to n do { !!! }
repeat
start := p;
p := start + pos(b[j], copy(st, start + 1, 255));
if
(
(p <> start)
and
((p = 1) or ( (p > 1) and not(st[p-1] in alpha)))
and
(
(p + pred(length(b[j])) = length(st)) or
((p + pred(length(b[j])) < length(st)) and
not(st[p+length(b[j])] in alpha))
)
) then

begin
delete(st, p, length(b[j]));
insert('~'+b[j]+'~', st, p);

inc(p, length(b[j]));
end;
until p = start;
a[i] := st;

isgray := true; textcolor(lightgray);
st := a[i];
for len := 1 to length(a[i]) do
if st[len] = '~' then begin
if isgray then begin
textcolor(lightred);
isgray := false;
end
else begin
textcolor(lightgray);
isgray := true;
end
end
else write(st[len]);

writeln;

end;
readln;
end.

сам просил rolleyes.gif
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





- Текстовая версия 21.01.2022 4:09
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name