2012-04-05 3 views
1

파스칼의 같은 줄에서 두 개의 문자열 변수를 읽으려고합니다.
두 문자열은 빈 공간으로 구분됩니다.파스칼에서 같은 줄에서 두 문자열을 읽는 방법?

한 문자열처럼 읽은 다음 두 부분으로 분리 해 보았습니다.하지만 문자열이 255자를 초과하므로 문제가 있습니다.

kyGOwpLobZvGynmdpiujxhUwphFsTTipuyAwpeffcckLuPouxmpQwGeMxqDoIqeWVkpdLueirlLiabfhxjnwbyMDYUfhGmlnFJdmfhtxljPqicbotSBvkKaQdsmbyrhmmSdexHjwdnecjRtzef mkhRyGOwpLobZvGynmdpiujxhUwphFsTTipuyAwpeffcckLumWbnbfdhlzFmnkkrwNsewPouxmpQwGeMxqDoIqeWVkpdLueirlLiabfhxjnwbyMDYUfhGmlnFJdmfhtxljPqicbotSBvkKaQdsmbyrhmmSdexHjwdnecjRtzeajfz`

라인 항상 같은 길이되지 않으며, 빈 공간은 같은 위치에되지 않습니다 :

여기에 내가 읽어 노력하고있어 문자열입니다.

두 번째 문자열에서 일부 문자를 삭제하면 첫 번째 문자열을 얻을 수 있는지 알아 내려고합니다.

예 : STRING aSgasTsaRoIgfNfdsG
은 긍정적 인 답을 가져올 것입니다.

다음은이를 확인하는 코드입니다.

q:=1; 
for m:=1 to length(b) do 
begin 
if b[m] = a[q] then 
q:=q+1; 
end; 

q:=q-1; 

writeln(q); 

if q = length(a) then 
writeln('YES') 
else 
writeln('NO'); 

여기서 a는 첫 번째 문자열이고, b는 두 번째 문자열입니다.

첫 번째 큰 문자열을 하나의 변수로 읽은 다음 두 부분으로 잘라냅니다.
첫 번째 문자열이 255 자보다 큰 경우 문제가 발생합니다. 그래서 같은 줄에서 두 줄을 읽는 방법을 알고 싶습니다.

코드 나 문자열 분리하기 위해 사용하고 대신 전체 라인을 읽을 readln()을 사용 아마도 당신은 한 번에 하나 개의 문자를 읽을 유형 char의 변수로 read()를 사용할 수의

readln(x); 

x:=LONGSTRINGHERE; 
blank:=' '; 
Location := Pos(blank, x); 

a:=Copy(x, 1, (Location-1)); 

b:=Copy(x, (Location+1), length(x)); 
+0

StackOverflow에 오신 것을 환영합니다. 텍스트 줄은 얼마나 걸립니까? 어디에서 가져 오는거야? 공간은 항상 같은 장소 (예 : * x * 문자)에 있습니까? 지금까지 시도한 코드를 게시 할 수 있습니까? 긴 문자열과 문제에 대한 간단한 설명을 붙여 놓는 것은 그리 많은 일이 아니며 문제를 직접 해결하기 위해 먼저 노력하는 것이 좋습니다. 질문을 편집하고 몇 가지 추가 정보를 제공해 주시겠습니까? 감사. :) –

답변

1

을 공백을 감지하고 두 번째 문자열을 읽을 때까지 첫 번째 문자열.

0

freepascal 컴파일러를 사용하고 문자열을 ansistring (2^16 = 65536 문자까지 가능)로 바꿀 수 있습니다.

관련 문제