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

Найти самое длинное симметричное слово в заданном предложении

16.04.2015, 18:25. Показов 1491. Ответов 16
Метки нет (Все метки)

Помогите, ввожу симметричные слова, а мне постоянно выдаёт симметричных слов нет!

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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
const mn=[' ',',','.','!'];
procedure TForm1.Button1Click(Sender: TObject);
var s,max,s1:string;
i:byte;
Function Simetr(s:string):boolean;
var s1:string;
i:byte;
begin
for i:=length(s) downto 1 do
s1:=s1+s[i];
Simetr:=s=s1;
end;
begin
Memo1.Text:='';
s:=Memo1.Text;
s:=s+' '; max:=''; s1:='';
for i:=1 to length(s) do
if not(s[i] in mn) then s1:=s1+s[i]
else
begin
if Simetr(s1) then
if length(s1)>length(max) then max:=s1;
s1:='';
end;
if max<>'' then label1.Caption:=max
else label1.Caption:='Симметричных слов нет';
end;
end.
Слово вводятся в Memo и выводятся в label, пробовал вариант с двумя Memo не получилось. Укажите пожалуйста на ошибку, по возможности исправьте. Заранее Спасибо!
Миниатюры
Найти самое длинное симметричное слово в заданном предложении  
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2015, 18:25
Ответы с готовыми решениями:

Найти самое длинное симметричное слово в заданном предложении
Как в программе определяется симметричное слово или нет? sW2 := S + sW2; //Слово в обратном...

В заданном предложении поменять местами первое слово и самое длинное слово
Кто-нибудь, помогите решить задачи на Lazarus или Delphi! 1. В заданном предложении поменять...

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

Найти самое длинное слово в предложении.
Найти самое длинное слово в предложении.

16
3 / 3 / 2
Регистрация: 18.09.2013
Сообщений: 58
16.04.2015, 18:39 2
Я уже подзабыл паскаль, но меня смутило это Memo1.Text:='' в процедуре нажатия кнопки. То есть ты вводишь слово в мемо и при нажатии кнопки делаешь его пустым. Может я не так понял.
выведи его в событие создания формы.
0
пофигист широкого профиля
4456 / 2944 / 830
Регистрация: 15.07.2013
Сообщений: 16,932
16.04.2015, 18:41 3
Цитата Сообщение от TimeWolf Посмотреть сообщение
Слово вводятся в Memo
Как вводятся? В столбик или в строчку?
0
0 / 0 / 0
Регистрация: 25.12.2014
Сообщений: 28
16.04.2015, 18:49  [ТС] 4
Это в условии не уточнялось, думаю в обоих вариантах должно работать.
0
пофигист широкого профиля
4456 / 2944 / 830
Регистрация: 15.07.2013
Сообщений: 16,932
16.04.2015, 18:58 5
Цитата Сообщение от TimeWolf Посмотреть сообщение
думаю в обоих вариантах должно работать
Тогда добавь в mn ещё два символа
Delphi
1
const mn=[#10,#13,' ',',','.','!'];
0
0 / 0 / 0
Регистрация: 25.12.2014
Сообщений: 28
16.04.2015, 19:05  [ТС] 6
Добавил, но ведь это проблемы не решает(
0
0 / 0 / 0
Регистрация: 25.12.2014
Сообщений: 28
16.04.2015, 19:10  [ТС] 7
и вправду не туда я её поставил, это строчка удаляла текст и дальше просто проходила проверка пустоты, но даже удаление этой строки не решила проблемы, по моему что то я здесь неправильно натворил.
Delphi
1
2
3
4
5
6
7
8
if Simetr(s1) then
if length(s1)>length(max) then max:=s1;
s1:='';
end;
if max<>'' then label1.Caption:=max
else label1.Caption:='Симметричных слов нет';
end;
end.
0
пофигист широкого профиля
4456 / 2944 / 830
Регистрация: 15.07.2013
Сообщений: 16,932
16.04.2015, 19:21 8
Цитата Сообщение от TimeWolf Посмотреть сообщение
это проблемы не решает
Но помогает избавиться от одной ошибки. В другую свою тему по этой проблеме заглядывал?

Добавлено через 9 минут
Цитата Сообщение от northener Посмотреть сообщение
В другую свою тему по этой проблеме заглядывал?
Сказанное в обоих темах в сумме решает проблему.
0
3 / 3 / 2
Регистрация: 18.09.2013
Сообщений: 58
16.04.2015, 19:22 9
Цитата Сообщение от TimeWolf Посмотреть сообщение
Simetr:=s=s1;
не особо понимаю, что у тебя вот тут происходит
0
пофигист широкого профиля
4456 / 2944 / 830
Регистрация: 15.07.2013
Сообщений: 16,932
16.04.2015, 19:33 10
Цитата Сообщение от Ebutuzik Посмотреть сообщение
что у тебя вот тут происходит
Сравниваются две переменные на равенство и результат сравнения присваивается спец. переменной, которая есть результат одноименной функции.
0
0 / 0 / 0
Регистрация: 25.12.2014
Сообщений: 28
16.04.2015, 21:04  [ТС] 11
Так и не понял в чём проблема, где ошибка?
0
пофигист широкого профиля
4456 / 2944 / 830
Регистрация: 15.07.2013
Сообщений: 16,932
16.04.2015, 21:08 12
Цитата Сообщение от TimeWolf Посмотреть сообщение
Так и не понял в чём проблема, где ошибка?
Ошибок было две.
1. В строке Memo1.Text:=''; очищалось Мемо. Так что и слов никаких для проверки не оставалось.
2. Не учитывались символы LF/CR (#10, #13)
0
0 / 0 / 0
Регистрация: 25.12.2014
Сообщений: 28
16.04.2015, 21:19  [ТС] 13
Это я исправил, но симметричные слова она так и не ищет
0
пофигист широкого профиля
4456 / 2944 / 830
Регистрация: 15.07.2013
Сообщений: 16,932
16.04.2015, 21:34 14
Лучший ответ Сообщение было отмечено TimeWolf как решение

Решение

Цитата Сообщение от TimeWolf Посмотреть сообщение
Это я исправил, но симметричные слова она так и не ищет
У меня ищет и находит.
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
const mn=[#10,#13,' ',',','.','!'];
procedure TForm16.Button1Click(Sender: TObject);
var s,max,s1:string;
i:byte;
Function Simetr(s:string):boolean;
var s1:string;
i:byte;
begin
for i:=length(s) downto 1 do
s1:=s1+s[i];
Simetr:=s=s1;
end;
begin
s:=Memo1.Text;
s:=s+' '; max:=''; s1:='';
for i:=1 to length(s) do
if not(s[i] in mn) then s1:=s1+s[i]
else
begin
if Simetr(s1) then
if length(s1)>length(max) then max:=s1;
s1:='';
end;
if max<>'' then label1.Caption:=max
else label1.Caption:='Симметричных слов нет';
end;
end.
1
0 / 0 / 0
Регистрация: 25.12.2014
Сообщений: 28
16.04.2015, 21:43  [ТС] 15
нашел ошибку))
Спасибо вам большое за помощь!
0
1 / 1 / 1
Регистрация: 24.12.2014
Сообщений: 46
17.04.2015, 11:54 16
Как в программе определяется симметричное слово или нет?
0
0 / 0 / 0
Регистрация: 21.04.2015
Сообщений: 8
23.04.2015, 15:26 17
Можете объяснить как работает эта программа?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2015, 15:26

Самое длинное слово в предложении
Очень прошу помогите!!! УМОЛЯЮ ПОЛНОЕ ТЕЛО ПРОГРАММЫ ПЛИИЗ КОД В ДЕЛФИ!!! Название темы...

Написать программу, которая находит самое длинное слово в предложении
Задано предложение, состоящее из слов-строк. Написать программу, которая находит самое длинное ...

Написать программу, которая находит самое длинное слово, встречающееся в предложении
Задано предложение-строка. Написать программу, которая находит самое длинное слово, встречающееся в...

Дан символьный файл f. Найти самое длинное слово в файле.(слово − произвольная последовательность символов, разделенная пробелами)
Дан символьный файл f. Найти самое длинное слово в файле.(слово − произвольная...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru