![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Программа меняет порядок следования слов на обратный.
Возникла проблема с выводом строки в файл. При запуске программы открывается пустое окно вывода результата на экран, файл не создается. ![]() Код:
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var str:string; procedure vvodstr(var str:string); var fin:TextFile; begin AssignFile(fin,'File1.txt'); Reset(fin); readln(fin,str); CloseFile(fin); end; function smena (str:string):string; var pr:integer; begin Result:=''; while Length(str)>0 do begin pr:=Pos(' ',str); Insert(Copy(str,1,pr),Result,1); Delete(str,1,pr); if pr=0 then begin Insert(str+' ',Result,1); end; pr:=0; end; end; procedure vivodres; var fout:TextFile; begin AssignFile(fout,'File2.txt'); Rewrite(fout); write(fout,smena(str)); CloseFile(fout); end; begin vvodstr(str); smena(str); vivodres; end. |
#2
|
|||
|
|||
![]() У вас последнее слово не удаляется из строки, цикл никогда не заканчивается (функция smena). То есть до записи результатов процесс даже не доходит.
Код:
function smena (str:string):string; var pr:integer; begin Result:=''; while Length(str)>0 do begin pr:=Pos(' ',str); // Здесь неплохо бы на 0 проверять результат поиска Insert(Copy(str,1,pr),Result,1); Delete(str,1,pr); if pr=0 then begin // Вот здесь сделайте что-нибудь с исходной строкой // Например после инсерта напишите str := '' Insert(str+' ',Result,1); end; pr:=0; // Эта строка совершенно не нужна end; end; |