Kezdőoldal » Számítástechnika » Programozás » Kettes számrendszerbeli szám...

Kettes számrendszerbeli szám karakterlánc használata nélküli visszaalakítása tizesbe, hogyan?

Figyelt kérdés

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.



2019. jan. 1. 11:03
1 2
 11/13 A kérdező kommentje:

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.

2019. jan. 2. 04:02
 12/13 A kérdező kommentje:

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.

2019. jan. 2. 04:05
 13/13 tabaki ***** válasza:

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.

2019. jan. 2. 08:55
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!