Показать сообщение отдельно
Старый 18.12.2013, 21:27   #1 (permalink)
Aksinia
Member
 
Регистрация: 15.12.2013
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 114
Question Найти ошибку в программе

Здравствуйте!
Помогите найти ошибку в программе, пожалуйста!
Задание - в прикрепленном файле.
Код:
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
Вложения
Тип файла: txt 20131212.txt (1.1 Кб, 568 просмотров)
Aksinia вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070