Kettes számrendszerbeli szám karakterlánc használata nélküli visszaalakítása tizesbe, hogyan?
Pascal-hoz értek csak valamennyire, "string" használata nélkül érdekelne, miként lehet megoldani ezt.
"IntToStr", "StrToInt" függvényeket is a stringes megoldásba értem, enélkül szeretném.
Nekem sajnos csak az átalakítás megy, a visszaalakítás nem.
Neten, fórumon néztem példakódokat visszaalakításra, kiakadnak, hibásan működnek.
Az átalakítás:
program kettes;
uses math;
type
tombtip = array of byte;
var
szam : longint;
jegyek_k : array of byte;
procedure szam_kettesbe (var jegyek_k : tombtip; szam : longint);
Var
i : byte;
Begin
i := 0;
while szam > 0 do
begin
SetLength(jegyek_k, i + 1);
jegyek_k[i] := szam mod 2;
szam := szam div 2;
Inc (i);
end;
for i := High(jegyek_k) downto 0 do
Write(jegyek_k[i]);
end;
begin
Write(#13#10,'Kerem a szamot : ');
ReadLn(Szam);
szam_kettesbe(jegyek_k, szam);
ReadLn;
end.
A Math unit azért maradt benne, mert a visszaalakítással kísérleteztem és eredetileg ebben az unit-ból hívható kóddal szándékoztam ezt végrehajtani.
Tudom, hogy rettenetes hibát követtem el, mert benne maradt a bemásolt kódban, de már nem tudok mit tenni.
Sejtelmem sincs, hány ember kedvét vehetik el a bántó stílusban megfogalmazott válaszok, akik egyébként szeretnének programozni.
Azzal kapcsolatban 0 észrevételed volt, aki összekeverte a függvényt az eljárással, kellemetlenül érezte magát emiatt és bántó megnyilvánulásai voltak.
program kettes;
{$MODE OBJFPC}
var
szam : qword;
i : byte;
jegyek_k : array of byte;
procedure szam_kettesbe;
Begin
i := 0;
while szam > 0 do
begin
SetLength(jegyek_k, i + 1);
jegyek_k[i] := szam mod 2;
szam := szam div 2;
Inc (i);
end;
end;
procedure kiiratas;
begin
WriteLn('A megadott szám kettes számrendszerben : ');
WriteLn;
for i := High(jegyek_k) downto 0 do
Write(jegyek_k[i]);
WriteLn;
end;
function tizesbe:qword;
begin
Result := 0;
for i := high(jegyek_k) downto 0 do
Result := Result*2+(jegyek_k[i]);
end;
begin
Write('Kerem a szamot : ');
ReadLn(Szam);
szam_kettesbe;
kiiratas;
WriteLn('tizesben : ',tizesbe);
ReadLn;
end.
Ahogy így sebtiben megnézve látom, ez már egészen rendesen összerakott kód. Mellékes megjegyzésem, hogy a tizesbe funkció {$MODE OBJFPC} direktíva nélkül, a Turbo Pascalból örökölt régi módon is visszaadhatná az értéket Result helyett tizesbe nevű függvényváltozót használva. Nem, mintha ezt tanácsolnám, tudomásom szerint kissé divatjamúlt megoldás.
„Tudom, hogy rettenetes hibát követtem el...”: A véletlenül bent felejtett unit nem okoz gondot, de megvan a rizikója, hogy valaki megemlíti...
„Sejtelmem sincs, hány ember kedvét vehetik el...”: Nekem sincs. Ugyanakkor, bár nem vagyok a szakmában, az a gyanúm, hogy a napi gyakorlatban csupa ennél nagyobb trauma éri a programozókat, ne vedd a lelkedre.
„Azzal kapcsolatban 0 észrevételed volt, aki...”: Pardon, mással voltam elfoglalva, egy alkalmi ismerősömnek programokat írogattam.
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!