Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
paskal07
0 / 0 / 0
Регистрация: 11.03.2011
Сообщений: 29
1

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

13.03.2011, 16:38. Просмотров 1986. Ответов 7
Метки нет (Все метки)

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

решите пожалуйста.

Добавлено через 20 минут
а и ещё
если есть возможность напишите ответ,
у меня просто щас возможности посмотреть нету .
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2011, 16:38
Ответы с готовыми решениями:

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

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

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

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

7
Asker
119 / 107 / 29
Регистрация: 18.12.2010
Сообщений: 378
14.03.2011, 09:04 2
Цитата Сообщение от paskal07 Посмотреть сообщение
найдите хотя бы одно слово ,которое встречается в каждом из трёх.
А можно пример?
0
paskal07
0 / 0 / 0
Регистрация: 11.03.2011
Сообщений: 29
14.03.2011, 16:02  [ТС] 3
в смысле?

---
Mawrat: задание не ясно сформулировано.
Цитата Сообщение от paskal07 Посмотреть сообщение
найдите хотя бы одно слово ,которое встречается в каждом из трёх.
В каждом из трёх чего? - В каждом из трёх предложений? Или имеется в виду вхождение в виде подстроки в какое-то из трёх заданных слов?
0
paskal07
0 / 0 / 0
Регистрация: 11.03.2011
Сообщений: 29
17.03.2011, 11:00  [ТС] 4
предложении.
0
i8085
2293 / 1631 / 331
Регистрация: 11.09.2009
Сообщений: 5,967
17.03.2011, 16:34 5
Цитата Сообщение от paskal07 Посмотреть сообщение
найдите хотя бы одно слово ,которое встречается в каждом из трёх предложений
Предложение - это строка.
Слово - тоже строка.
Задача разбивается на две: выделить из предложения слово и найти слово в строке.
Найти в строке слово просто:
Delphi
1
if Pos(Cлово, Строка) > 0 then ... // слово в строке есть
Выделить слово немного сложнее. Надо выделять последовательность символов до разделителя (пробел, запятая, точка и др. знаки). Плюс к этому разделителей может быть несколько подряд...
В общем виде принцип такой:
Delphi
1
Слово:= Copy(Предложение, 1, Pos(Разделитель, Предложение)-1);
Более полные примеры алгоритма можно найти тут, на форуме.
0
Mawrat
12934 / 5786 / 1704
Регистрация: 19.09.2009
Сообщений: 8,807
22.03.2011, 11:55 6
Delphi
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
const
  //Максимальное количество различающихся слов во всех строках.
  M = 15;
  //Количество строк.
  N = 3;
 
type
  //Тип, описывающий структуру для хранения множества слов.
  TVault = record
    //Количество слов.
    Len : Integer;
    //Массив слов.
    Arr : array[1..M] of String;
  end;
 
//Добавление слова в хранилище.
//В хранилище записываются только уникальные слова.
//Т. е., если слово уже присутствует в хранилище - такое слово не добавляется.
procedure AddToVault(var aVault : TVault; aSWord : String);
var
  i : Integer;
  IsFound : Boolean;
begin
  //Проверка - есть ли слово в хранилище.
  IsFound := False;
  for i := 1 to aVault.Len do begin
    if aVault.Arr[i] = AnsiUpperCase(aSWord) then begin
      IsFound := True;
      Break;
    end;
  end;
  //Если слова нет - добавляем его.
  if not IsFound then begin
    Inc(aVault.Len);
    aVault.Arr[aVault.Len] := aSWord;
  end;
end;
 
//Выделение слов из строки и запись их в хранилище.
//Т. е., формирование множества слов, присутствующих в тексте aStr.
procedure FillVault(const aStr : String; var aVault : TVault);
const
  //Множество разделителей слов.
  D = [' ', '.', ',', ':', ';', '!', '?', '-', #9, #10, #13];
var
  sWord : String;
  i, Len, Pos1 : Integer;
begin
  aVault.Len := 0;
  Len := Length(aStr);
  Pos1 := 0;
  for i := 1 to Len do begin
    //Пропускаем разделители.
    if aStr[i] in D then Continue;
    //Отслеживаем начало слова.
    if (i = 1) or (aStr[i - 1] in D) then Pos1 := i;
    //Отслеживаем конец слова.
    if (i = Len) or (aStr[i + 1] in D) then begin
      sWord := Copy(aStr, Pos1, i - Pos1 + 1);
      AddToVault(aVault, sWord);
    end;
  end;
end;
 
//Обнаружение слов, которые присутствуют в обоих хранилищах.
//Здесь определяется пересечение двух множеств aVault1 и aVaultRes.
//Результирующее множество слов перезаписывает содержимое aVaultRes.
procedure IntersectVault(const aVault1 : TVault; var aVaultRes : TVault);
var
  i, j, k : Integer;
begin
  k := 0;
  for i := 1 to aVaultRes.Len do
  for j := 1 to aVault1.Len do begin
    if aVaultRes.Arr[i] = aVault1.Arr[j] then begin
      Inc(k);
      aVaultRes.Arr[k] := aVaultRes.Arr[i];
      Break;
    end;
  end;
  aVaultRes.Len := k;
end;
 
var
  ArrS : array[1..N] of String;
  S : String;
  Vault1, VaultRes : TVault;
  i : Integer;
  Res : Boolean;
begin
  //Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  //Если после переключения русские буквы показываются неверно,
  //следует открыть системное меню консольного окна - щелчком мыши в левом
  //верхнем углу окна консоли и выбрать:
  //Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  repeat
    Writeln('Задайте ', N, ' строк:');
    i := 0;
    repeat
      Inc(i);
      Writeln('Строка № ', i, ':');
      Readln(ArrS[i]);
    until i = N;
 
    //Проверяем, есть ли слова, которые присутствуют во всех строках.
    Res := True;
    //Составляем множество слов из первой строки.
    FillVault(ArrS[1], VaultRes);
    for i := 2 to N do begin
      //Составляем множество слов из очередной строки.
      FillVault(ArrS[i], Vault1);
      //Определяем пересечение множеств.
      IntersectVault(Vault1, VaultRes);
      //Если пересечением множеств является пустое множество, значит
      //нет ни одного слова, которое бы присутствовало во всех строках.
      if VaultRes.Len = 0 then begin
        Res := False;
        Break;
      end;
    end;
 
    //Ответ.
    if Res then begin
      Writeln('Есть слова, которые присутствуют во всех строках.');
      Writeln('Перечень таких слов:');
      for i := 1 to VaultRes.Len do begin
        if i > 1 then Write(', ');
        Write(VaultRes.Arr[i]);
      end;
      Writeln;
    end else begin
      Writeln('Нет ни одного слова, которое присутствовало бы во всех строках.');
    end;
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
0
paskal07
0 / 0 / 0
Регистрация: 11.03.2011
Сообщений: 29
22.03.2011, 19:11  [ТС] 7
Спасибо конечно огромное ,но короче ни как ?
0
Евгений В
890 / 652 / 131
Регистрация: 01.03.2010
Сообщений: 1,241
22.03.2011, 19:26 8
paskal07,
Такой вариант тестируй
Delphi
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
procedure TForm1.Button1Click(Sender: TObject);
var
  i,j,k,N:Integer;
  str:string;
  Word:array of string;
  StrList:TStringList;
const
  D:array [0..7] of Char =(' ', '.', ',', ':', ';', '!', '?', '-');
 
 // процедура удаления в полученном столбце слов знаков, совпадающих с содержимым массива D
procedure Delimiter_D(StrList:TStringList);
var
  i:Integer;
begin
 for i:=0 to High(D) do
 begin
 StrList.Delimiter:=D[i];
 StrList.DelimitedText:= StrList.Text;
 end;
end;
 
begin
StrList:=TStringList.Create;
//берем первое предложение и разбиваем его на слова (в столбец)
StrList.DelimitedText:=Memo1.Lines.Strings[0];
Delimiter_D(StrList);
 //создаем массив  искомых слов и заполняем его
 SetLength(Word,StrList.Count);
for i:=0 to  StrList.Count-1 do Word[i]:=StrList.Strings[i];
 
// Теперь проверяем, есть ли такие слова(из первого предложения) в других предложениях
 for i:=0 to High(Word)-1 do // перебираем искомые слова
  begin
    N:=1;
    for j:=1 to Memo1.Lines.Count-1 do // выбираем предложения, начиная со второго
    Begin
     StrList.DelimitedText:=Memo1.Lines.Strings[j];
     Delimiter_D(StrList);
      for k:=0 to StrList.Count-1 do
       if StrList.Strings[k]=Word[i] then
       begin
        Inc(N);
        Break;
       end;
 
     if Memo1.Lines.Count=N then
     begin
      if Pos(Word[i],Str)=0 then Str:=Str+'  '+Word[i];// Pos(Word[i],Str)=0 на случай повторов слов в 1-м предложении
      N:=1;
     end;
    end;
  end;
 // выводим результат
 Label1.Caption:='Совпадают слова:  '+str;
 StrList.Free;
end;
0
22.03.2011, 19:26
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2011, 19:26

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти и вывести слово которое встречается в каждом предложении текста
Условие задачи:&quot;Найти и вывести слово которое встречается в каждом предложении текста&quot;.Плиз можно...

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

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

Определить, есть ли среди трех заданных чисел хотя бы одно четное (хотя бы одно нечетное)
Даны три целых числа A, B, C. Определить, есть ли среди них хотя бы одно четное и хотя бы одно...


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

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

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