내 작업은 텍스트 파일을 입력으로 사용하고 'a'로 시작하는 모든 단어를 다른 단어로 쓰는 프로그램을 만드는 것입니다.파스칼 프로그램 추출 단어
program project1;
var
f,g:text;
ch,b:char;
ile,pos1,pos2,i:integer;
s:string;
begin
assign(f, 'input.txt');
assign(g, 'score.txt');
reset(f);
rewrite(g);
ile:=0;
pos1:=0; pos2:=0;
while not eof(f) do begin
read(f,b);
write(g,b);
Inc(pos1);
read(f,ch);
write(g,ch);
Inc(pos2);
if (b=' ') and (ch='a') then begin
repeat
read(f,ch);
inc(pos2);
write(g,'ala');
until ch=' ';
//for i:=pos1 to pos2 do
//writeln(g,s[i]);
//writeln;
end;
end;
close(f);
close(g);
end.
을 나는 이것이이 input.txt
의 내용을 재현하고 score.txt
에 배치 실행하면 다음과 같이 내가 가지고 올 수있는 가장 좋은 방법입니다. 내 '조건'에 무작위 진술을 추가하여 진실인지 아닌지를 알 수있었습니다. 내가 잘못하고 있거나 어쩌면 해결책을 찾았는지 알 수 있을까요?
내가 간단한 예제를 사용하여 실험을 시도
편집 - 난, '수출'을 말하고 변경 한 단어로 구성된 input.txt를했다 '경우의 조건'에 :
if (b='e') and (ch='x') then begin
repeat
write(g,ch);
read(f,ch);
until ch='t';
내 이해는 하나의 단어로 구성된 output.txt를 생성해야합니다 : 'export'하지만 출력 파일에 무작위로 수천 개의 임의의 문자를 만드는 무한 루프가되는 것 같습니다 ...
아마도 내가 필요한 것은 그러한 절차의 메커니즘에 대한 설명입니다. – Pasato
내 제안은 input.txt에서 개별 문자를 읽지 않는 것입니다. readln (f, s)를 사용하여 한 줄씩 읽으십시오. 그런 다음 "a"또는 "A"로 시작하는 단어에 대해 문자열 (예 : pos() 함수)을 스캔 할 수 있습니다. "a"앞에있는 문자가 공백 또는 위치가 1이면 다음 공백까지 또는이 문자열의 끝에 도달 할 때까지 복사 할 수 있습니다. char로 char을 읽어야한다면, score.txt 모드로 복사 중일 때 추적 할 플래그 (boolean)가 필요합니다. 또한 줄 끝 문자 (# 10과 # 13)를 읽는 것도 고려해야합니다. – ToonVo
Thx ToonVo. 문자열을 사용하여 처리하려고했지만 제대로 작동하지 않았습니다. 몇 가지 코드를 제공해 주시겠습니까? 또한 pos()는 줄에서 첫 번째 'a'의 위치를 제공합니다. 같은 줄에 'a'로 시작하는 단어가 더 있다면? – Pasato