2012-04-05 8 views
1

Ich versuche, zwei String-Variablen aus der gleichen Zeile in Pascal zu lesen.
Die zwei Zeichenfolgen sind durch Leerzeichen voneinander getrennt.Wie liest man zwei Strings aus derselben Zeile in Pascal?

Ich habe versucht, es wie eine Zeichenfolge zu lesen, dann trennt es auf zwei Teile, aber dann habe ich ein Problem, weil die Zeichenfolge größer als 255 Zeichen ist.

Hier ist der String ich zu lesen bin versucht:

kyGOwpLobZvGynmdpiujxhUwphFsTTipuyAwpeffcckLuPouxmpQwGeMxqDoIqeWVkpdLueirlLiabfhxjnwbyMDYUfhGmlnFJdmfhtxljPqicbotSBvkKaQdsmbyrhmmSdexHjwdnecjRtzef mkhRyGOwpLobZvGynmdpiujxhUwphFsTTipuyAwpeffcckLumWbnbfdhlzFmnkkrwNsewPouxmpQwGeMxqDoIqeWVkpdLueirlLiabfhxjnwbyMDYUfhGmlnFJdmfhtxljPqicbotSBvkKaQdsmbyrhmmSdexHjwdnecjRtzeajfz`

Die Linie ist nicht immer die gleiche Länge, und der leere Raum ist nicht an der gleichen Stelle.

Ich versuche herauszufinden, ob durch das Löschen einiger Zeichen aus der zweiten Zeichenfolge Sie die erste erhalten können.

Beispiel: STRING aSgasTsaRoIgfNfdsG
sollte eine positive Antwort ergeben.

Hier ist der Code, der dafür prüft.

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'); 

wobei a der ersten Saite ist, b ist die zweite.

Ich lese die erste große Zeichenfolge als eine Variable und dann schneiden Sie es in zwei Teile.
Das Problem tritt auf, wenn die erste Zeichenfolge größer als 255 Zeichen ist. Deshalb möchte ich wissen, wie ich zwei Saiten aus derselben Linie lesen kann.

Der Code verwende ich die Saiten zu trennen:

readln(x); 

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

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

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

Willkommen bei StackOverflow. Wie lang ist die Textzeile? Woher bekommst du es? Befindet sich der Raum immer an der gleichen Stelle (z. B. das Zeichen * x *)? Können Sie den Code, den Sie bisher versucht haben, posten, der nicht funktioniert? Das Einfügen einer langen Zeichenfolge und einer sehr kurzen Beschreibung des Problems gibt nicht viel weiter, und es ist hier vorzuziehen, dass Sie sich Mühe geben, das Problem zuerst selbst zu lösen. Können Sie Ihre Frage bitte bearbeiten und zusätzliche Informationen bereitstellen? Vielen Dank. :) –

Antwort

1

Statt readln() der Verwendung die gesamte Linie lesen vielleicht könnten Sie read() mit einer Variablen vom Typ verwenden char ein Zeichen in einer Zeit zu lesen in Ihre erste Zeichenfolge, bis Sie ein Leerzeichen erkennen und dann die zweite Zeichenfolge lesen.

0

Sie können den Freepascal-Compiler verwenden und die Zeichenfolge durch anistring ersetzen, die bis zu 2^16 = 65536 Zeichen lang sein kann.

Verwandte Themen