Pascal-ban egy szám fordítottját szeretném megkapni, longint változóban, hogy kell megvalósítani?
Következőt szeretném, pl. szám: 25 és megfordítja, lesz 52 stb.
Anélkül szeretném megkapni, hogy stringgé konvertálnám, majd vissza számmá, hogyan lehet ezt megvalósítani?
Én csak olyan módszert tudok, hogy számjegyeket tömbbe teszem.
Függvénynek nem tudtam visszatérési értéket adni, mert nem tudom, miként lehetne longint változóba tenni az eredményt.
program szam;
function forditva (n : longint):longint;
Var
szam : longint;
szamok : array of byte;
i : byte;
Begin
szam := n;
i := 0;
while szam > 0 do
begin
setlength(szamok, i + 1);
szamok[i] :=szam mod 10;
szam := szam div 10;
inc(i);
end;
end;
begin
WriteLn(forditva(9876));
ReadLn;
end.
program swapper;
SwapThisNum(const Num: longint) : longint;
begin
result:= Num;
end;
begin
SwapThisNum(66);
end.
amúgy pedig:
eredmeny = 0
ciklus amig szam > 0:
utolso = szam mod 10
eredmeny = eredmeny * 10 + utolso
szam = szam div 10
ciklus vege
"Függvénynek nem tudtam visszatérési értéket adni, mert nem tudom, miként lehetne longint változóba tenni az eredményt."
A #4-es hozzászólására építve (ha feltételezzük, hogy az eredmeny változó longint)
forditva := eredmeny;
Lásd:
Nem sikerült hiba nélkül beépíteni a javasolt módosításokat, kérhetek segítséget?
program szam;
function forditva (n : longint):longint;
Var
szam, szam_megforditva, eredmeny, utolso : longint;
szamjegyek : array of byte;
i : byte;
Begin
eredmeny := 0;
szam := n;
i := 0;
szam_megforditva := szam;
while szam > 0 do
begin
setlength(szamjegyek, i + 1);
szamjegyek[i] :=szam mod 10;
szam := szam div 10;
inc(i);
end;
while szam_megforditva > 0 do
begin
utolso := high(szamjegyek);
szamjegyek[utolso] := szam_megforditva mod 10;
eredmeny := eredmeny * 10 + utolso;
end;
forditva := eredmeny;
end;
begin
WriteLn(forditva(9876));
ReadLn;
end.
Kedves kérdező, félreértetted.
A #4-es hozzászóló a topiknyitó kérdésedben levő while ciklus helyére szánta a dolgot.
Tehát a setlength sor helyére kerül az utolso-s, a szamok[i]-s sor helyére az eredmeny-es sor (a szamok tömb, az i változó deklarálása illetve az i inicializálása és növelése nem kell).
Jah, az egész hercehurca nem kell amit csinálsz:
Ennyi az egész:
program szam;
function forditva (szam : longint):longint;
Var eredmeny, utolso : longint;
begin
eredmeny := 0;
while szam > 0 do
begin
utolso := szam mod 10;
eredmeny := eredmeny * 10 + utolso;
szam := szam div 10;
end;
forditva := eredmeny;
end;
begin
WriteLn(forditva(9876));
ReadLn;
end.
Nem próbáltam ki (meg amúgysem értek pascalhoz), úgyhogy az esetleges hibákat majd javítsd ki.
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!