Pascal-ban egy függvényt szeretnék írni, ami a kapott számban felcseréli a számjegyeket. Miként lehet ezt megoldani?
Matematikai műveletekkel kellene megoldani a számjegyek cseréjét és nem string-be konvertálással, "val", "str", "inttostr", "strtoint" eljárásokkal...
Ezeket a fentebbieket szeretném kizárni és csak számolással, matematikai műveletekkel szeretném a cserét megoldani, van erre valamilyen lehetőség?
Kétjegyű számokra gondoltam.
45 -> 54
stb...
Többjegyűek esetén pedig pl. megfordítaná.
12345
54321
Egyenlőre elég lene nekem a kétjegyűekre, érdekelne, hogy matematikai műveletekkel mit lehetne elérni...
Azért nem írok semmit, mert nem tudom mit kellene írni...
A függvény deklarációját le tudnám írni és a begin és end; párosokat.
Semmi értelme matekozni.
Fel kell cserélni a jegyeket sorban az elejétől a közepéig.
Kétjegyűek esetén:
1. Kiszeded a tízes és egyes helyiértéken levő számokat (egészosztás és maradékképzés művelet a barátod.
2. Újraalakítod a számot, a szerepek felcserélésével (szorzás, osztás a barátod).
int Reverse(int x)
{
int lenght = 0;
for(int i = x; i != 0; i /= 10, ++lenght)
;
int num = 0;
for(int j = 0; j < lenght; ++j)
{
num += (x % 10) * pow(10, lenght - j - 1);
x /= 10;
}
return num;
}
#4. válaszoló megoldását megvalósítottam.
A C kódos válaszoló megoldása is hasonló (mármint az elv), de hááát abba beletörne a bicskám, nem nagyon értem hogy mi az a length és a for ciklusok miért kellenek, illetve valószínűleg azért, mert többjegyűekre optimalizált.
Program Szamjegy_Cssere;
var
szam : integer;
Function csere (szam : integer) : integer;
var
x : integer;
begin
x := szam mod 10*10 + szam div 10;
csere := x;
end;
begin
Write('Kerem a szamot : ');
readln(szam);
writeln('a felcserelt szam: ',csere(szam));
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!