Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
msk19
38 / 1 / 3
Регистрация: 16.11.2015
Сообщений: 103
1

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

09.12.2015, 22:35. Просмотров 383. Ответов 1
Метки нет (Все метки)

Вспомним игру: "Придумай слово", в которой из букв слова-донора составляют другие слова. Например, из слова МОНИТОР можно получить МОТОР, РОТ, ТИР и др. Вхождение каждой буквы в новое слово допускается не более того числа раз, с каким она входит в слово-донор.
Пусть дана последовательность слов, разделенных пробелами в виде строки символов. Известно, что первое слово в этой строке является донором. Выбрать из оставшихся слов последовательности те, которые можно получить из заданного слова-донора.
Как проще всего сделать?
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
var h,j,k,u,p,l,v,d,t:integer;
r,q,w:string;
begin
readln(r);      h:=0;   u:=1;  p:=0; l:=0; t:=0;
 while r[h]<>' ' do
   h:=h+1;
 q:=copy(r,1,h-1);
  delete(r,1,h);
                    r:=r+' ';
 while h<=length(r) do  begin
 h:=h+1;
        p:=0;   l:=0;v:=0; t:=0;
     if r[h]=' ' then begin
       w:=copy(r,1,h-1) ;
                   delete(r,1,h);h:=0;
 
   for d:=1 to length(w) do begin
           l:=0;v:=0;
      for k:=1 to length(w) do begin
     if k=1 then p:=p+1;
         if (w[p]=w[k]) then l:=l+1;
           end;
     for k:=1 to length(q) do
         if (w[p]=q[k]) then v:=v+1;
          if l<=v then t:=t+1;
           //  writeln(l,' ',v,'            dl ',w,length(w),'    ',t);
             readln
            end;
      if length(w)=t then    write(w,' ');
                 end;
                 end;
 readln
end.
не работает
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2015, 22:35
Ответы с готовыми решениями:

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

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

Дана последовательность слов. Напечатать все слова последовательности, которые встречаются в ней по одному разу.
1.8. 2.Составить программу печати в возрастающем порядке всех цифр, входящих в десятичную запись...

Дана последовательность, состоящая из 10 слов. Напечатать те слова последовательности, которые имеют нечётное количество символов
Дана последовательность, состоящая из 10 слов. Напечатать те слова последовательности, которые...

Выбрать из символьной строки только те слова, которые можно трактовать как год (например, 1951 или 2004)
Ввести любое количество строк с предложениями .В качестве знаков препинания использовать только...

1
Торович
207 / 207 / 213
Регистрация: 03.07.2012
Сообщений: 448
12.12.2015, 12:42 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
uses
  crt;
var
  i, j, l, k, z : integer;
  s, w, w_d : string;
  bol : boolean;
begin
  s := 'МОНИТОР МОТОР РОТ ТИР';
  s := s + ' ';
  w_d := copy(s,1,pos(' ',s)-1);
  delete(s,1,pos(' ',s));
  while (s<>'') do begin
    w := copy(s,1,pos(' ',s)-1);
 
    bol := true;
    for i := 1 to length(w) do begin
      k := 0; //кол-во вхождений буквы в слово-донор
      for j := 1 to length(w_d) do if w_d[j]=w[i] then inc(k);
      l := 0; //кол-во повторений буквы в слове
      for z := 1 to length(w) do if w[i]=w[z] then inc(l);
      if (l>k) or (k=0) then begin
        bol := false;
        break;
      end;
    end;
 
    if bol then writeln(w);
 
    delete(s,1,pos(' ',s));
  end;
  readln;
end.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2015, 12:42

Удалить слова, которые содержат все буквы заданного слова, и продублировать остальные слова
Разделитель — один из символов « ,.;:!?&quot;'» (начиная с пробела и заканчивая апострофом). Буква —...

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

Найти количество слов, которые можно получить перестановкой букв данного слова
Сколько различных слов можно получить перестановкой букв слова &quot;ПРЕЦЕНДЕНТ&quot; - буквы Е не стоят...


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

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

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