String elválasztása szavakra, hogyan?
Én sem értek a pascalhoz. Tapasztalatom szerint, csak gimis tanárok szeretik, akik lusták voltak haladni a korral, így még mindig ezt a sz-rt tanítják a diákoknak.
Viszont, hogy segítsek megkérdeztem a ChagtGPT-4-et. Tudom bárki megtudja kérdezni, de mivel a 4-es előfizetés kell és tényleg jobb válaszokat ad, így remélem segít ez a válasz:
A Pascal egyik egyszerű módja a szavakra bontásnak, hogy beolvassuk a beírt mondatot, majd végigiteráljuk a karaktereken, és kiszűrjük a szavakat. Itt van egy egyszerű példa egy Pascal programra, amely ezt megvalósítja:
program SzavakraBontas;
uses SysUtils;
var
inputStr: string;
words: array of string;
word: string;
i: integer;
begin
Write('Add meg a mondatot: ');
ReadLn(inputStr);
SetLength(words, 0);
word := '';
for i := 1 to Length(inputStr) do
begin
if inputStr[i] <> ' ' then
begin
word := word + inputStr[i];
end
else
begin
if word <> '' then
begin
SetLength(words, Length(words) + 1);
words[High(words)] := word;
word := '';
end;
end;
end;
if word <> '' then
begin
SetLength(words, Length(words) + 1);
words[High(words)] := word;
end;
WriteLn('A szavak száma: ', Length(words));
WriteLn('A szavak:');
for i := 0 to High(words) do
begin
WriteLn(words[i]);
end;
ReadLn;
end.
Ez a program először megkéri a felhasználót, hogy írja be a mondatot, majd végigiterál a karaktereken és a szavakat eltárolja a words dinamikus tömbben. A program végén kiírja a szavak számát és az egyes szavakat.
köszi sikerült
var
words : array of string;
WCount : byte;
Procedure Split(inputStr: string);
var i: byte;
begin
for i := 1 to length(inputStr) do
if (inputStr[i] <> ' ') then
begin
if (i = 1) or (inputStr[i-1] = ' ') then
begin
inc(Wcount);
setlength(Words, WCount);
end;
Words[WCount-1] := Words[WCount-1] + inPutStr[i];
end;
end;
var
words : array of string;
i : byte;
Procedure Split(inputStr: string);
begin
setlength(words,1);
for i := 1 to length(inputStr) do
if (inputStr[i] <> ' ') then
begin
if (i = 1) or (inputStr[i-1] = ' ') then setlength(Words, length(Words)+1);
Words[length(Words)-1] := Words[length(Words)-1] + inPutStr[i];
end;
end;
begin
split(' lakmus salamander 27694 #theo <= frett solar DEADBEEFh');
for i := 1 to length(Words)-1 do writeln(i,' ',Words[i]);
end.
Oh shit!
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!