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

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

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

 
Closed Topic Открыть новую тему 
> чтение файла , выделение слов
сообщение
Сообщение #1


Новичок
*

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

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


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


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


Ищущий истину
******

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

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


вот.

uses crt;

Var
ft:text;
s:string[70];
a,b:array[1..11] of string[70];
m,n, i,j,f:integer;
ch:byte;
begin
Assign(ft,'text700.dat');
reset(ft); i:=1;
while not eof(ft) do begin
readln(ft,s);
a[i]:=s;
inc(i);
end;m:=i;
close(Ft);
write('n='); readln(n);
writeln('new word - new line');
for i:=1 to n do readln(b[i]); f:=1; j:=1;
repeat
clrscr;
for i:=1 to m do begin
if pos(b[j],a[i])<>0 then begin
for j:=1 to f do begin
insert('_',a[i],pos(b[j],a[i]));insert('_',a[i],pos(b[j],a[i])+length(b[j]))
end;
end;
writeln(a[i]);
end;
ch:=ord(readkey);
inc(f);
until (ch=27) or (f>n);;
readln;
end.


и файл на котормо тестировал
Прикрепленный файл  text700.txt ( 724 байт ) Кол-во скачиваний: 611


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Спастбо!!! пошел тестить!!!


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


Новичок
*

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

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


Блин не очень что-то во первых постоянно на два пробела увеличивает все слова.Хотелось чтобы цветом выделение шло.


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


Знаток
****

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

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


uses crt;

Var
ft:text;
s:string[70];
a,b,c:array[1..11] of string[70];
m,n,i,j,f:integer;
ch:byte;

begin
clrscr;
Assign(ft,'text700.dat');
reset(ft); i:=1;
while not eof(ft) do begin
readln(ft,s);
a[i]:=s;
inc(i);
end;m:=i - 1;
close(Ft);
for i := 1 to m do
writeln(a[i]);
write('n='); readln(n);
writeln('new word - new line');
for i:=1 to n do readln(b[i]); f:=1; j:=1;
repeat
clrscr;
c := a;
for i:=1 to m do
begin
if pos(b[f],c[i])<>0 then
begin
insert('_',c[i],pos(b[f],c[i]));insert('_',c[i],pos(b[f],c[i])+length(b[f]))
end;
writeln(c[i]);
end;
ch:=ord(readkey);
if ch = 0 then ch := ord(readkey);
inc(f);
until (ch=27) or (f>n);;
readln;
end.


немного исправил прогу Altair'a. Единственно если например будет слово в тексте abcd ,то если искать в тексте слово bcd ,то оно найдется в этом слове.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


Ребяты сделайте плиз цветом а то так чувствую у меня не примут!!!!


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


Гость






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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

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

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


Да........ Наворотил.......
Спасибо!!!


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


Новичок
*

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

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


Спасибо но задание звучит так : поочередно выделять заданные слова в тексте!!!!
mad.gif


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


Гость






HeX
Вот возьми и исправь ПО ЗАДАНИЮ. Ясно? Тебе наверное лучше знать, что значит ПООЧЕРЕДНО? Я не являюсь телепатом.

Предупреждение: еще раз воспользуешься ссылкой "сообщить модератору" - приму меры. Эта ссылка НЕ для того, чтобы на себя обращать внимание mad.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Вот тебе поочередно (Жми Enter для выделения следующего слова)...

P.S. Чтобы постов, подобных предыдущему, я больше никогда не видел. Ты что, кого-то нанял на работу, и тебе эту работу не сделали? Я кстати, просил объяснить, что значит "поочередно". Ты не захотел...

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;
ss, st: string;
isgray: boolean;

procedure print_all;
var i: integer;
begin
clrscr;
for i := 1 to line_count do begin
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;

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
ss := a[i];

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

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

a[i] := ss;
st := ss;
end;
until p = start;
a[i] := st;

end;
readln;
end.
 К началу страницы 
+ Ответить 

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

 





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