Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Fores
0 / 0 / 3
Регистрация: 10.03.2014
Сообщений: 7
1

Найти в каждом предложении текста первое слово и вывести слова, которые состоят из тех же букв, что и первое слово

11.03.2014, 15:04. Просмотров 714. Ответов 1
Метки нет (Все метки)

Доброго времени суток! Прошу помочь разобраться. Полностью текст задачи выглядит так:
Перечислить все слова каждого предложения, которые состоят из тех же букв, что и первое слово данного предложения. Из этих слов организовать новое предложение и записать его в конец исходного текста.

Основная проблема с поиском в каждом предложении текста. Чувствую, накосячил с операторными скобками и breakами

Прилагаю свой "код"

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
var a:array[1..50] of string;
i,n,j,np,k,g,l:integer;
s,s1,s2,buf:string;
f:text;
begin
assign(f,'Night.txt');
reset(f);
while not eof(f) do begin
read(f,s);
write(s);
end;
writeln;
while pos('.',s)>0 do
begin
s1:=copy(s,1,pos('.',s)-1);
delete(s,1,pos('.',s));
if s1<>'' then
begin
inc(n);
a[n]:=s1;
end;
end;
for i:=1 to n do
writeln(A[i]);
for i:=1 to n do begin
s1:=a[i];
for j:=1 to length (s1) do begin
if s1[j]<>'' then s2:=s2+s1[j]
else begin
np:=j;
end;
for l:= np + 1 to length(s1) do
if s1[l] <> ' ' then buf := buf + s1[l] else begin
if length(buf) < length(s2) then begin
for k:= 1 to length(buf) do begin
for g:= 1 to length(s2) do
if buf[k] = s2[g] then begin
writeln(buf);
break;
end;
break;
end;
buf := '';
end
else
begin
for j := 1 to length(s2) do
begin
for g := 1 to length(buf) do
if buf[g] = s2[j] then begin
writeln(buf);
break;
end;
break;
end;
buf := '';
end;
end;
end;
end;
close(f);
end.
Заранее благодарю!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2014, 15:04
Ответы с готовыми решениями:

Напечатать все слова, которые состоят из тех же литер, что и последнее слово текста
Пусть дан текст, заканчивающийся точкой. Текст состоит из слов, разделённых...

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

Требуется поменять местами первое и последнее слово в каждом предложении и сохранить результат в файл
3. Дан файл с текстом. Требуется поменять местами первое и по-следнее слово в...

Из текста выделить все слова, содержащие буквы, входящие в первое слово этого текста
Помогите решить 4 задачки скоро сдавать, а я не успеваю сам сделать. Заранее...

Вывести первое слово текста наибольшей длины
1) Дан текстовый файл. Вывести первое слово текста наибольшей длины. Словом...

1
Fores
0 / 0 / 3
Регистрация: 10.03.2014
Сообщений: 7
25.03.2014, 22:22  [ТС] 2
Разобрался сам, вот код, может быть, кому-нибудь пригодится
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 const mnr=[' ',',','.','-','_','!','?',':',';'];
 Var A:array[1..30] of string;
    i,n,j,np,k,g,l:byte;
    s,s1,s2,buf,st:string;
    f:text;
    mnpr,mnbuf:set of char;
Begin
assign(f,'Night.txt');
reset(f);
while not eof(f) do begin
read(f,s);
write(s);
end;
writeln;
    While Pos('.',s)>0 do
    Begin
      s1:=Copy(s,1,Pos('.',s)-1);
      Delete(s,1,Pos('.',s));
      if s1<>'' then
      Begin
        inc(n);
        A[n]:=s1+'.';
      End;
    End;
    For i:=1 to n do begin
     writeln(A[i]);
     st:=st+a[i];
     end;
for i:=1 to n do begin
s1:=a[i];
for j:=1 to length (s1) do begin
if not (s1[j] in mnr) then s2:=s2+s1[j]
else
begin
np:=j;
break;
end;
end;
for k:=1 to length(s2) do begin 
if not(s2[k] in mnpr) then 
mnpr:=mnpr+[s2[k]];
end;
for l:= np + 1 to length(s1) do begin
if not(s1[l] in mnr) then begin
buf := buf + s1[l];
mnbuf:=mnbuf+[s1[l]];
end
else
begin
if mnpr=mnbuf then st:=st+buf+' ';
buf:='';
mnbuf:=[];
end;
end;
s2:='';
mnpr:=[];
end;
writeln;
write(st);
close(f);
end.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2014, 22:22

Вывести первое и последнее слово текста наибольшей длины
Дан текстовый файл. Вывести первое и последнее слово текста наибольшей длины (с...

Вывести первое и последнее слово текста наибольшей длины.
Данo текстовый файл, вывести первое и последнее слово текста наибольшей длины....

Напечатать слова, начинающиеся с той же буквы, что и первое слово
Дана строка, состоящая из слов, разделенных пробелами, и оканчивающаяся точкой....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru