Kezdőoldal » Számítástechnika » Programozás » Pascal string megfordítása...

X483 kérdése:

Pascal string megfordítása ReverseString () nélkül?

Figyelt kérdés
A ReverseString jól működik, de az lenne a "feladat" hogy reversestring nélkül, hogy lehet megfordítani egy stringet. (Igazából magamnak csinálok egy kisebb programot, mert jól jönne és itt akadtam meg, de a lényeg, hogy ReverseString nélkül)

2015. ápr. 10. 22:29
1 2
 1/12 anonim ***** válasza:

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)

2015. ápr. 10. 22:40
Hasznos számodra ez a válasz?
 2/12 A kérdező kommentje:
Köszönöm így már tökéletes. :D
2015. ápr. 10. 22:43
 3/12 tabaki ***** válasza:

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.

2015. ápr. 10. 23:37
Hasznos számodra ez a válasz?
 4/12 tabaki ***** válasza:

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.

2015. ápr. 11. 00:05
Hasznos számodra ez a válasz?
 5/12 anonim ***** válasza:
100%

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.

2015. ápr. 11. 16:52
Hasznos számodra ez a válasz?
 6/12 tabaki ***** válasza:

„a "byte" változótípust írd át másra”

Meg a string típust is...

Vagy {$H-}.

2015. ápr. 11. 17:57
Hasznos számodra ez a válasz?
 7/12 anonim ***** válasza:
{$H+} a helyes, a direktívát be kell kapcsolni. Teszteltem {$H+} beírásával, akár 8000 hosszig is elment.
2015. ápr. 11. 18:43
Hasznos számodra ez a válasz?
 8/12 SimkoL ***** válasza:
{$H.} Turbo Pascal-ban nincs ilyen kapcsoló :)
2015. ápr. 11. 19:00
Hasznos számodra ez a válasz?
 9/12 tabaki ***** válasza:
Már megint igazatok van. A direktívát csak melléütöttem sebtiben, az meg eszembe se jutott, hogy Turbót is használ még valaki, pedig nini, a címke!
2015. ápr. 11. 21:03
Hasznos számodra ez a válasz?
 10/12 anonim ***** válasza:

É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.

2015. ápr. 12. 04:51
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!