Pascal string megfordítása ReverseString () nélkül?
Csinálsz még egy ugyanakkora méretű tömböt. Kell egy for ciklus, ami mondjuk 0-ról indul.
string Szoveg = "abcde"
string Masolat = ÜresString(StringHossz(Szoveg))
Ciklus i=0-tól StringHossza(Szoveg)
-- Masolat[i] = Szoveg[StringHossza(Szoveg) - i]
C-ben:
char Szoveg[] = "abcde";
int Hossz = strlen(Szoveg);
char* Masolat = (char*)malloc(sizeof(char) * Hossz + 1);
int i;
for (i = 0; i < Hossz; i++)
Masolat[i] = Szoveg[Hossz - i - 1] //C-ben 0-tól kezdődik az indexelés
Masolat[i] = '\0';
//...
free(Masolat)
Sajnos, csak ékezet nélküli karakterekkel működik:
program szovegfordito;
var i, hossz : byte;
szoveg : string = 'Ez itten egy valamilyen string.';
csere : char;
BEGIN
hossz := Length(szoveg);
for i := 1 to hossz div 2 do
begin
csere := szoveg[hossz+1-i];
szoveg[hossz+1-i] := szoveg[i];
szoveg[i] := csere;
end;
WriteLn(szoveg);
ReadLn;
END.
Ugyanaz, csak így kevesebb a ciklusban végzett művelet:
program szovegfordito;
var
i, hossz : byte;
szoveg : string = 'Ma te is szorulsz.';
csere : char;
BEGIN
hossz := Length(szoveg)+1;
WriteLn(szoveg);
for i := 1 to (hossz-1) div 2 do
begin
csere := szoveg[hossz-i];
szoveg[hossz-i] := szoveg[i];
szoveg[i] := csere;
end;
WriteLn(szoveg);
ReadLn;
END.
Az én megoldásom (ha 255 méretnél hosszabb stringet szeretnél használni, a "byte" változótípust írd át másra):
Program Stringforditas;
Var
s, st : String;
i, hossz : byte;
begin
ReadLn(s);
hossz := Length(s);
st:='';
For i:= hossz DownTo 1 do
st:= st +s[i];
WriteLn('a forditott szöveg : ',st);
readln;
end.
„a "byte" változótípust írd át másra”
Meg a string típust is...
Vagy {$H-}.
Én sem figyeltem, hogy Turbo Pascal-ról van szó, nem tudom hogy a mai gépek esetén milyen környezetben használható még a Turbo Pascal (gondolom ezért nem telepítenek DOS-t, hogy fusson, bár lehet hogy Windows parancssoros környezetben is elfut, nem tudom).
Közben rájöttem, hogy a hossz változót teljesen felesleges volt beiktatni a megoldásomba, mondjuk ez előbb is eszembe juthatott volna.
Program Stringforditas;
Var
s, st : String;
i : byte;
begin
ReadLn(s);
st:='';
For i:= Length (s) DownTo 1 do
st:= st +s[i];
WriteLn('a forditott szöveg : ',st);
readln;
end.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!