Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2008, 21:00   #1
Blad47
Пользователь
 
Регистрация: 10.11.2008
Сообщений: 93
По умолчанию Самое симметричное слово

Всем привет,написал программу парился пару часов,цель программы найти симметричное слово предложения,написал ,но в самом конце при сравнивании какая-то ошибка не могу разобраться,подскажите пожалуйста.
Думаю другим будет тоже полезен код.
Код:
Program simmetria;
Uses CRT;
 Var f:boolean;
 P,a,b,s,max:string;i,l,j:integer;
BEGIN
max:='a';
clrscr;
write('Vvedi predlojenie  ');
readln(p);
l:=length(p);
for i:=1 to length(p) do
 Begin
  f:=false;
  a:=copy(p,i,1);
  if a=' ' then
   Begin
    f:=true;
     for j:=1 to length(s) div 2 do
      Begin
       a:=copy(s,j,1);
       b:=copy(s,length(s)-j+1,1);
        if a<>b then
         Begin
          f:=false;
          s:='';
          break

         End
      End;

   End
   else s:=s+a;
 if f=true then
 Begin
  if length(s)>lenght(max) then
   Begin
    Max:=s;
   End;
  s:='';
 End;

 End;
 writeln('Sim ',max);
Repeat until keypressed;


END.
ЗЫ После предложения обязательно надо ставить пробел!
Blad47 вне форума Ответить с цитированием
Старый 22.11.2008, 21:13   #2
Blad47
Пользователь
 
Регистрация: 10.11.2008
Сообщений: 93
По умолчанию

Вот переписал сам,кому нужно берите на здоровье!!!
Код:
Program simmetria;
Uses CRT;
 Var f:boolean;
 P,a,b,s,max:string;i,l,h,g,j:integer;
BEGIN
max:='a';
clrscr;
write('Vvedi predlojenie  ');
readln(p);
l:=length(p);
for i:=1 to length(p) do
 Begin
  f:=false;
  a:=copy(p,i,1);
  if a=' ' then
   Begin
    f:=true;
     for j:=1 to length(s) div 2 do
      Begin
       a:=copy(s,j,1);
       b:=copy(s,length(s)-j+1,1);
        if a<>b then
         Begin
          f:=false;
          s:='';
          break

         End
      End;

   End
   else s:=s+a;
 if f=true then
 Begin
  h:=length(s);
  g:=length(max);
  if h>g then
   Begin
    Max:=s;
   End;
  s:='';
 End;

 End;
 writeln('Sim ',max);
Repeat until keypressed;


END.
Blad47 вне форума Ответить с цитированием
Старый 22.11.2008, 21:15   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
readln(p);
l:=length(p);
for i:=1 to length(p) do
 Begin
  f:=false;
  a:=copy(p,i,1);
  if a=' ' then
   Begin
    f:=true;
     for j:=1 to length(s) div 2 do
Если не секрет, откуда взялась s?
puporev вне форума Ответить с цитированием
Старый 22.11.2008, 21:18   #4
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

Попробуй вместо "if length(s)>lenght(max) then",
" if length(s)>length(max) then".
pomoshnic вне форума Ответить с цитированием
Старый 22.11.2008, 21:24   #5
Blad47
Пользователь
 
Регистрация: 10.11.2008
Сообщений: 93
По умолчанию

Ха,вот это верно)))
Я запарился реально,но уже работает ,а это главное!
Спасибо
Blad47 вне форума Ответить с цитированием
Старый 22.11.2008, 21:29   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
l:=length(p);
for i:=1 to length(p) do
А первая строчка тогда зачем?
puporev вне форума Ответить с цитированием
Старый 22.11.2008, 21:38   #7
Blad47
Пользователь
 
Регистрация: 10.11.2008
Сообщений: 93
По умолчанию

хз)
убрал
Blad47 вне форума Ответить с цитированием
Старый 22.11.2008, 23:05   #8
lexus_ilia
Студентик :)
Пользователь
 
Аватар для lexus_ilia
 
Регистрация: 29.09.2008
Сообщений: 84
По умолчанию

епт, а зачем убрал 1-ую строчку?
Код:
l:=length(p);
Если надо
Код:
or i:=1 to length(p) do
поменять на
Код:
or i:=1 to l do
Из-за того, что у тебя длинна каждый раз считается получается не оптимально.
lexus_ilia вне форума Ответить с цитированием
Старый 23.11.2008, 17:12   #9
Blad47
Пользователь
 
Регистрация: 10.11.2008
Сообщений: 93
По умолчанию

Ok) учту спс
Blad47 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в текстовом файле в каждой строке наити самое длинное слово Storm Помощь студентам 4 04.06.2008 15:56
Определить сколько раз встречается в тексте самое короткое слово - Delphi 7 Леди Уинтер Помощь студентам 3 08.01.2008 17:56
С++ Найти самое длинное слово строки k0z7_g0b1in Общие вопросы C/C++ 3 22.04.2007 17:37