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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2009, 22:30   #1
MaJlbBuHa
 
Регистрация: 11.10.2009
Сообщений: 2
Вопрос Найдите ошибку

Всем доброе время суток, исправьте пожалуйста у меня ошибки
Задача:
Дан текст удалить из него слова, которые начинаются и заканчиваются на одну букву.
Вот мой код:
Код:
uses crt;  

var
delim,s,result,tmps: string;
a:array[1..100] of byte;
 { }
 i,p,k,w:byte;

begin
delim:='',.;:?""';
 writeln(' Enter string:'); { priglashaem na vvod ctroki}
 readln(s); {vvodim stroky s }
 s:='+s+';{}
 w:=0;{}
 for i:=1 to 100 do a[i]:=0;
 for i:=1 to length(delim) do
 begin
 tmps:=s;
 k:=pos (delim[i],tmps);
 p:=0;
 While (k>0) do begin
 p:=p+k;
 w:=w+1;
 a[w]:=p;
 delete(tmps,1,k);
 k:=pos(delim[i],tmps);
 end;
 end;
 {cortiryem massiv}
 for i:=1  to w-1 do
 if (a[i]>a[k]) then begin
 p:=a[i];
 a[i]:=a[k];
 a[k]:=p;
 end;
 result:=' ';
 for i:=1 to w-1 do
 if (a[i+1]-a[i]>1) then
 {}
 begin
 tmps:=copy(s,1+a[i],a[i+1]-1-a[i]);{word}
 if (tmps[1]=tmps[length(tmps)]) then
 {pervaya zapic cootvetctvyet poslednei}
 result:=result+s[a[i+1]]
 {}
 else
 result:=result+tmps+' '+tmps+s[a[i+1]];
 {}
 end
 else
 result:=result+s[a[i+1]];
 writeln('original:'+s);
 writeln('result:'+result);
 readln;
end.
может можно как то проще решить?
Заранее спасибо

Последний раз редактировалось Stilet; 21.10.2009 в 12:55.
MaJlbBuHa вне форума Ответить с цитированием
Старый 20.10.2009, 22:43   #2
P®o©omp@s
Пользователь
 
Аватар для P®o©omp@s
 
Регистрация: 20.10.2009
Сообщений: 25
По умолчанию

P.s. хоть я и искусственный интеллект, но строка:
{ priglashaem na vvod ctroki} меня просто "убивает"..
ну во-первых ошибка у вас была в
Код:
delim:='',.;:?""';
ну а если код, то думаю, что правильнее выглядело бы так:
Код:
program freechis; //свободные числа
var
   s:string;//оперируемая строка
delim,result,tmps: string;
a:array[1..100] of byte;
{ }
i,p,k,w:byte;
begin
delim:=',.;:?"';
writeln(' Enter string:'); { priglashaem na vvod ctroki}
readln(s); {vvodim stroky s }
s:='+s+';{}
w:=0;{}
   for i:=1 to 100 do a[i]:=0;
     for i:=1 to length(delim) do
       begin  
       tmps:=s;
       k:=pos (delim[i],tmps);
       p:=0;
            While (k>0) do begin
                 p:=p+k;
                 w:=w+1;
                 a[w]:=p;
                delete(tmps,1,k);
                k:=pos(delim[i],tmps);
               end;
          end;
{cortiryem massiv}
   for i:=1 to w-1 do
          if (a[i]>a[k]) then begin
                 p:=a[i];
                 a[i]:=a[k];
                 a[k]:=p;
               end;
result:=' ';
   for i:=1 to w-1 do
         if (a[i+1]-a[i]>1) then
            begin
                 tmps:=copy(s,1+a[i],a[i+1]-1-a[i]);{word}
                     if (tmps[1]=tmps[length(tmps)]) then
                       {pervaya zapic cootvetctvyet poslednei}
                          result:=result+s[a[i+1]]
             else
               result:=result+tmps+' '+tmps+s[a[i+1]];
             end
             else result:=result+s[a[i+1]];
writeln('original:'+s);
writeln('result:'+result);
readln;
end.
p.s. будет ошибку выкидывать, из-за того что выбран тип byte(очень маленький в нашем случае, вот уж чтоб исправить потрудитесь сами )
Знание - сокровищница, но ключ к ней - практика.
(The Knowledge is a treasure house, and key for it is a practice.)

Последний раз редактировалось P®o©omp@s; 20.10.2009 в 22:46.
P®o©omp@s вне форума Ответить с цитированием
Старый 20.10.2009, 23:26   #3
MaJlbBuHa
 
Регистрация: 11.10.2009
Сообщений: 2
По умолчанию

спасибо исправила,но почему то у меня все равно не правильно выполняет. в чем может быть дело? может можно как нибудь по легче решить?
MaJlbBuHa вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найдите ошибку в коде pony Помощь студентам 1 14.09.2009 10:03
Найдите ошибку St1fler92 Помощь студентам 4 26.05.2009 15:23
найдите ошибку Сова Паскаль, Turbo Pascal, PascalABC.NET 9 11.02.2009 18:46
НАЙДИТЕ ОШИБКУ В ПРОГРАММЕ svetah Помощь студентам 8 03.12.2008 15:19
Найдите ошибку! geniy JavaScript, Ajax 4 04.12.2007 16:22