Kezdőoldal » Számítástechnika » Programozás » Pascal-ban egy szám fordítottj...

Pascal-ban egy szám fordítottját szeretném megkapni, longint változóban, hogy kell megvalósítani?

Figyelt kérdés

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.



2018. dec. 23. 13:09
 1/10 anonim ***** válasza:
23%

program swapper;


 SwapThisNum(const Num: longint) : longint;

 begin

  result:= Num;

 end;


begin

 SwapThisNum(66);

end.

2018. dec. 23. 13:23
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
#1: Még bővítsd a teszteseteidet más (lehetőleg nem 1 jegyű) számokkal:)
2018. dec. 23. 13:24
Hasznos számodra ez a válasz?
 3/10 A kérdező kommentje:
Kreatívabb megoldásra gondoltam, meg működőképesebbre is.
2018. dec. 23. 13:29
 4/10 anonim ***** válasza:

amúgy pedig:


eredmeny = 0

ciklus amig szam > 0:

utolso = szam mod 10

eredmeny = eredmeny * 10 + utolso

szam = szam div 10

ciklus vege

2018. dec. 23. 13:30
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:
6%
Ha önerőből rájössz, hogy kell int-et, byte-ot longint-té alakítani, akkor elárulom a megoldást.
2018. dec. 23. 13:35
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:

"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:

[link]

2018. dec. 23. 14:09
Hasznos számodra ez a válasz?
 7/10 A kérdező kommentje:

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.

2018. dec. 23. 18:24
 8/10 anonim ***** válasza:

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

2018. dec. 23. 19:20
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:
100%

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.

2018. dec. 23. 19:55
Hasznos számodra ez a válasz?
 10/10 A kérdező kommentje:
Tökéletes lett, ksszönöm szépen.
2018. dec. 24. 16:27

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!