![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Помоги понять почему прога при введении в строку более одного слова зацикливается........
Код:
{$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. |
|
#2
|
||||
|
||||
|
Напиши хоть что она должна делать.
Инвертировать строку? "abc"->"bac".? |
|
#3
|
|||
|
|||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!
Последний раз редактировалось Asira, 27.12.2009 в 18:11. |
|
#4
|
||||
|
||||
|
Ясн.
Проверь виполнение условий выхода из цикла. |
|
#5
|
|||
|
|||
|
Помогите ничего не могу понять не хочет она работать более чем с 1 словом.................
|
|
#6
|
||||
|
||||
|
Цитата:
А как ей бедной не виснуть? Я ж написал: проверь условия. Смотри Код:
while (pos(s[i],znaki)<>0) and (i<=length(s))do write(s[i]); Inc(i); //end; Пока pos(s[i],znaki)<>0 (допустим выполняеться) и (i<=length(s)) печатает s[i]. Но Inc(i); стоит вне цикла. Тоесть "i" не меняеться. Вот прога и строчит тебе s[i]. Та и кроме этого еще полно ошибок в проге. |
|
#7
|
|||
|
|||
|
Спасибо !!!!!!!!! дак если полно ошибок дак подскажи хоть где искать ...
Функцию я проверяла она работала без ошибок а вот дальше............. Последний раз редактировалось Asira, 23.12.2009 в 22:34. |