Здравствуйте!
Помогите найти ошибку в программе, пожалуйста!
Задание - в прикрепленном файле.
Код:
12.12.2013
Проверка д/з (от 05.12.2013): 7 задач/программ
д/з Многострочный редактор TxtEdt (ликвидация ошибок пунктуации)
| На входе строка, содержащая буквы и символы пунктуации (из первой половины ASCII).
| Задача: удалить "лишние" символы пунктуации и добавить недостающие пробелы:
| * слово = фрагмент строки, состоящиЙ из букв,
| * после символа пунктуации должен быть 1 пробел или конец строки,
| * после 'слова' может быть только 1 символ пунктуации или пробел или конец строки,
| * первому слову строки не должны предшествовать не-буквы.
| Редактирование строки выполняется за счет вызова подпрограмм, ликвидирующих однотипные "ошибки".
| Ввод из входного текстового файла <имя1>.txt (несколько строк-тестов).
| Вывод конечного результата построчно в текстовый файл <имя2>.txt.
| Пример:
| , ;ВАСЯ,, .ПЕТЯ , , ... => ВАСЯ, ПЕТЯ, ...
д/з Упрощенный вариант: редактор строки StrEdt {-1 балл}
| Из текстового файла <имя1>.txt вводится строка.
| Вывод результирующей строки в текстовый файл <имя2>.txt.
PHP код:
program project2;
var S:string;
f1,f2:text;
function BeginOfLine(S:string):string;
var O:string;i:integer;
begin
O:=S;
i:=1;
while not (((ord(O[i])>64) and (ord(O[i])<91)) or ((ord(O[i])>96) and (ord(O[i])<123))) do begin
delete(O,(i),1);
i:=i+1;
end;
BeginOfLine:=O;
end;
function DelProbBefCh(S:string):string;
var P:string;i:integer;
begin
P:=S;
for i:=1 to length(P) do
if ((((ord(P[i])>32) and (ord(P[i])<48)) or ((ord(P[i])>57) and (ord(P[i])<64))) and
(P[i-1]=' ')) then delete(P,i-1,1);
end;
function DelNextSimb(S:string):string;
var N:string;i:integer;
begin
N:=S;
for i:=1 to length(N) do
if ((((ord(N[i])>32) and (ord(N[i])<48)) or ((ord(N[i])>57) and (ord(N[i])<64))) and
(((ord(N[i+1])>32) and (ord(N[i+1])<48)) or ((ord(N[i+1])>57) and (ord(N[i+1])<64)))) then delete(N,i+1,1);
DelNextSimb:=N;
end;
function InsProb(S:string):string;
var M:string;i:integer;
begin
M:=S;
for i:=1 to length(M) do
if ((((ord(M[i])>32) and (ord(M[i])<48)) or ((ord(M[i])>57) and (ord(M[i])<64))) and (((ord(M[i+1])>64) and (ord(M[i+1])<91)) or ((ord(M[i+1])>96) and (ord(M[i+1])<123)))) then begin
insert(' ',M,(i+1));
end;
InsProb:=M;
end;
begin
assign(f1, 'Input.txt');
reset(f1);
assign(f2, 'Output.txt');
rewrite(f2);
while not eof(f1) do begin
readln(f1,S);
S:=BeginOfLine(S);
S:=DelProbBefCh(S);
S:=DelNextSimb(S);
S:=InsProb(S);
writeln(f2,S);
end;
close(f1);
close(f2);
end.