![]() |
|
|
Регистрация | << Правила форума >> | 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. |