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

В заданном предложении найти слова, из которых одно является обращением другого ("дом" - "мод")

16.04.2015, 13:21. Просмотров 715. Ответов 7
Метки нет (Все метки)

Помогите пожалуйста написать код на программу которая В заданном предложение находит слова из которых одно является обращением другого слова(типа дом - мод) мне нужно это сделать на форме в делфи с использованием мемо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2015, 13:21
Ответы с готовыми решениями:

Каждую встреченную в заданном предложении букву "р" заменить сочетанием букв "ля"
Составить программу которая каждую встречную в заданном предложении букву "р" заменяла бы...

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

Нужно найти в строке все слова, в которых есть буквы "о" и "и"
Нужно найти в строке все слова ,в которых есть буквы "о" и "и", и вывести их. Я пока нашла все...

В заданном предложении найти пару слов, из которых одно является обращением другого
Помогиите с заданием(((( В заданном предложении найти пару слов, из которых одно является...

7
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
29339 / 19400 / 7609
Регистрация: 22.10.2011
Сообщений: 33,827
Записей в блоге: 6
16.04.2015, 14:17 3
При чем тут палиндромы? Дом и Мод палиндромами не являются. Это Ананимы
1
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
16.04.2015, 18:04  [ТС] 4
volvo, ну да , не понимаю что в коде написать чтобы работало
0
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
18.04.2015, 10:19  [ТС] 5
Ну помогите
0
5 / 5 / 6
Регистрация: 11.04.2015
Сообщений: 56
18.04.2015, 15:05 6
Очень черновой, но рабочий вариант (сделано в xe3)
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
unit Ananims_;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.AnsiStrings;
 
type
  TF = class(TForm)
    Memo: TMemo;
    bStart: TButton;
    ListBox: TListBox;
    procedure bStartClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  F: TF;//гл. форма
  S:TStringList;//список слов
 
 
implementation
 
{$R *.dfm}
 
procedure TF.bStartClick(Sender: TObject);
var i,j,n,l,p,k:integer;
    revStr,tStr:AnsiString;
    flag:Boolean;//есть ананимы или нет
begin
S:=TStringList.Create;
S.Clear;
//for i:=0 to 0 do S.Add('');
S.Delimiter:=' ';//делитель на слова - пробел
S.DelimitedText:=F.Memo.Lines[0];//загрузка слов
n:=S.Count-1;//кол-во слов в строке
//  ShowMessage(IntToStr(n));
for i:=0 to n do
begin
  l:=length(S[i]);//длина слова
  tStr:=trim(S[i]);//очищаем слово от пробелов
  tStr:=AnsiUpperCase(tStr);
//  ShowMessage(tStr);
  flag:=true;//по умолчанию есть
  for j:=i+1 to n do //цикл сравнения слов
  begin
  revStr:=trim(ReverseString(S[j]));
  revStr:=AnsiUpperCase(revStr);
  if(AnsiCompareText(tStr,revStr)=0) then
  if(l>1) then//длина слова больше 1 буквы
  begin F.ListBox.Items.Add(S[i]);F.ListBox.Items.Add(S[j]);end else flag:=false;
  end;
end;
  if(flag=false) then ShowMessage('Нет таких слов');
end;
 
procedure TF.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeAndNil(S);
end;
 
end.
0
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 22
19.04.2015, 17:34  [ТС] 7
Budetlyanin, а как тебе вот этот вариант
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    Memo2: TMemo;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
 
  
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
 
var
 a:array[1..100] of string;
 s:String;
 k,z,n,i,j:integer;
begin
memo1.Clear;
    try
 s:=Edit1.Text;
i:=1;
While i<=Length(s) do
 begin
  if s[i]=',' then
   begin
    Delete(s,i,1);
    i:=i-1;
   end;
  i:=i+1;
 end;
i:=0;
s:=s+' ';
while pos(' ', s) <> 0 do
begin
i:=i+1;
a[i]:=copy(s,1,pos(' ', s)-1);
delete(s,1,pos(' ', s));
memo1.Lines.Add(a[i]);
end;
n:=i;
   for i:=1 to n do
   for z:=i+1 to n do
        begin
             if (Length(a[i])=Length(a[z]))
             and not ((Length(a[i])=1) and (a[i]<>a[z])) 
              then
                  begin
                  k:=0;
                  for j:=1 to Length(a[i])div 2 do
                      if a[i][j]=a[z][length(a[i])-j+1] then inc(k);
                           if k=Length(a[i]) div 2 then
        memo2.Lines.Add((a[i])+' - '+(a[z]));
       end;
       end;
   except
   on e:Exception do
   memo2.Lines.Add('');
   end;
   end;
end.
0
5 / 5 / 6
Регистрация: 11.04.2015
Сообщений: 56
20.04.2015, 04:18 8
никак. скопировал твой код. в Edit1.text вписал пример: "Киборг сделал гробик.". запустил приложение. в memo1 загрузились слова, а в memo2 - пусто. я так понял, что ты на регистр не проверял. но даже если всё написать маленькими буквами, тоже не работает. в общем, думай сам.

Добавлено через 9 часов 55 минут
улучшенный вариант (падежи не учитываются)
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
unit Ananims_;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.StrUtils;
 
type
  TF = class(TForm)
    Memo: TMemo;
    bStart: TButton;
    ListBox: TListBox;
    procedure bStartClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  F: TF;
  S:TStringList;
 
 
implementation
 
{$R *.dfm}
 
procedure TF.bStartClick(Sender: TObject);
const DelSign:array [1..14] of string[3]=
                           (
                           '?!.',
                           '...',
                           '?!',
                           ',',
                           ';',
                           ':',
                           '"',
                           '''',
                           '.',
                           ',',
                           '?',
                           '!',
                           '(',
                           ')'
                           );
var Q,i,j,n,l,l0,p,k:integer;
    sWord,//строка-слово
    revWord,//слово наоборот
    sClr:String;
    nStr:integer;
begin
S:=TStringList.Create;
S.Clear;
nStr:=F.Memo.Lines.Count-1;
for Q:=0 to nStr do
begin
sClr:=F.Memo.Lines[Q];
p:=0;
            repeat//цикл для удаления всяких знаков препинания
             for j:=1 to high(delSign) do
             begin
                  p:=pos(DelSign[j],sClr);
                  if(p<>0) then delete(sClr,p,length(DelSign[j]));
             end
            until(p=0);
 
 
S.Delimiter:=' ';
S.DelimitedText:=sClr;
n:=S.Count-1;//кол-во слов в строке
for i:=0 to n do
begin
  l:=length(S[i]);//длина слова
  sWord:=trim(S[i]);//очищаем слово от пробелов
  sWord:=UpperCase(sWord);//возвращает строку в верхнем регистре
 
  for j:=i+1 to n do //цикл сравнения слов
  begin
  if(l=1) then continue;
  revWord:=trim(ReverseString(S[j]));
  revWord:=UpperCase(revWord);
  if(AnsiCompareText(sWord,revWord)=0) then F.ListBox.Items.Add(S[i]+'-'+S[j]);
  end;
end;
end;
  k:=F.ListBox.Count-1;
  if(k=-1) then ShowMessage('Cлов-ананимов не найдено');
end;
 
procedure TF.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeAndNil(S);
end;
 
procedure TF.FormShow(Sender: TObject);
begin
F.Memo.WordWrap:=false;//без перевода строки, если не вмещается по длине memo
F.Memo.Lines.Add('Маленький, но одарённый, киборг выплавил из сплава никиля и молибдена гробик.');
F.Memo.Lines.Add('Ударил гром аж затрясся морг.');
F.Memo.Lines.Add('Телефон - это почти что нофелет).');
end;
 
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2015, 04:18

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

В заданном предложении найти пару слов, из которых одно является обращением другого
В заданном предложении найти пару слов, из которых одно является обращением другого. Указание:...

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

В заданном предложении найти пару слов, из которых одно является обращением другого
В заданном предложении найти пару слов, из которых одно является обращением другого /* В...

В заданном предложении найти пару слов , из которых одно является обращением другого в pascal
Объясните как это сделать на языке Pascal


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

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

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