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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2009, 21:07   #1
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию Помогите понять почему прога виснет

Помоги понять почему прога при введении в строку более одного слова зацикливается........
Код:
{$APPTYPE CONSOLE}

uses
  SysUtils;

const znaki=',.";: -?!' ;
function Perestanovka(s: string): string;
var
  l,p:integer;
begin
  l:= length(s);p:= l div 2;
  if l mod 2 = 0  then
  begin
s := s + copy(s, 1, p);
Delete(s, 1, p);
  end
  else
  begin
    s := s + copy(s, p + 1, 1) + copy(s, 1, p);
    Delete(s, 1, p + 1);
  end;
   Perestanovka:= s;
end;


 var k,i: Integer;
  S, s1: String;
begin
writeln('Enter string ');
 readln(s);
 i:=1;

while i<=length(s) do
  begin
i:=1;
while (pos(s[i],znaki)=0) and (i<=length(s))do
begin
//s1:=' ';
s1:= s1 + s[i];
Inc(i);
end;
write(Perestanovka(s1));
end;
 while (pos(s[i],znaki)<>0) and (i<=length(s))do
 write(s[i]);
Inc(i);
//end;
Readln;
  Readln;
end.
Asira вне форума Ответить с цитированием
Старый 21.12.2009, 21:09   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
while i<=length(s) do
  begin
i:=1;
она всегда должна зацикливатся у вас
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.12.2009, 21:40   #3
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

*модератору на удаление*

Последний раз редактировалось Базиля; 21.12.2009 в 21:42.
Базиля вне форума Ответить с цитированием
Старый 21.12.2009, 22:01   #4
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

Она даж ещё работает только с 1 словом.....!!!!!!
Asira вне форума Ответить с цитированием
Старый 21.12.2009, 22:54   #5
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

Как это можно исправить?? если я убираю 1 ничего не меняется
Asira вне форума Ответить с цитированием
Старый 21.12.2009, 22:57   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

while i<=length(s) do
begin
i:=1;
while (pos(s[i],znaki)=0) and (i<=length(s))do
begin
//s1:=' ';
s1:= s1 + s[i];
Inc(i);
end;
write(Perestanovka(s1));
end;
while (pos(s[i],znaki)<>0) and (i<=length(s))do
write(s[i]);

Inc(i);
//end;
Readln;
Readln;
end.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плииз!!! помогите! Не могу понять почему не работает! (Паскаль) Викуська_ Помощь студентам 5 21.04.2009 20:37
Не могу понять почему не идет сортировка файла, помогите пожалуйста Taisja Помощь студентам 2 15.06.2008 20:37
Не могу понять почему вылетает 3 процедурка, помогите Taisja Помощь студентам 2 04.06.2008 21:28