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
 1/13 A kérdező kommentje:
Sikerült megcsinálni. :-)
2019. jan. 1. 12:00
 2/13 anonim ***** válasza:

Az eddig inkább csak káosz, mint megoldás.

Minek kap az a szerencsétlen függvény két paramétert?

Miért csinálja a kiírást is az átváltás mellett ha egyszer nem az a dolga?

2019. jan. 1. 13:18
Hasznos számodra ez a válasz?
 3/13 A kérdező kommentje:

Eljárás és függvény közti különbség megvan?

Eme programba nem írtam függvényt.

2019. jan. 1. 15:49
 4/13 A kérdező kommentje:

Eljárás és függvény közti alapvető eltérést nem tudod, ez a baj, igen.

Neked nem tudok megfelelni és nem is szeretnék.

2019. jan. 1. 16:10
 5/13 A kérdező kommentje:

Első válaszodban mintha te nevezted volna az eljárást függvénynek, leírtad, hogy "az a szerencsétlen függvény" két paramétert kap...

Innentől csak magadat mentegeted.

2019. jan. 1. 16:25
 6/13 anonim ***** válasza:

Aki látott már más nyelvet is a pacalon (sic!) túl, az tudja, hogy semmi lényegi különbség nincs a kettő között, úgyhogy ezen nagyon kár vergődnöd.

Az viszont súlyos szemantikai hiba, hogy egy függvény két teljesen elkülönő dolgot csinál.

Szóval hiszti helyett inkább a feltett kérdésekre válaszolj, hátha sikerül eljutnunk affelé, hogy miért nem tudsz működő példakódkat működésre bírni.

2019. jan. 1. 16:29
Hasznos számodra ez a válasz?
 7/13 A kérdező kommentje:

A kérdést én tettem fel.

A kód lefut, lefordul, működik.

2019. jan. 1. 16:52
 8/13 A kérdező kommentje:

Jelen esetben te állítottad ki magadról a szegénységi bizonyítványodat.

Jövőbeni válaszaidra nem reagálok.

A megoldást már megtaláltam és az is működik csak úgy mint a fenti kód.

Minden jót!

2019. jan. 1. 17:04
 9/13 tabaki ***** válasza:

„A megoldást már megtaláltam és az is működik csak úgy mint a fenti kód.”


Éppenséggel azt is bemutathattad volna, pláne, ha tényleg csak úgy működik, mint a másik. Abban ugyanis vannak elvarratlan szálak. Negatív szám esetén például hibára fut, ami önmagában még nem volna baj, ha csak pozitív számokat akarsz kiíratni. Akkor viszont a szam változó miért negatív számok tárolására is alkalmas longint, nem pedig mondjuk dword vagy qword? Nem világos, hogy mi szükség van a tombtip típus létrehozására, persze belefér a programba, csak minek? De ha már van, miért nem használod mindig azt az array of byte helyett? Miért hozol létre kétszer szam változót és jegyek_k tömböt (egyszer globális-, egyszer meg procedúraváltozókként)? Az amúgy fölösleges másodpéldányokat egyébként az érthetőség kedvéért illett volna másképp elnevezni. De tulajdonképpen egyáltalán nem értem, miért kellett a globális változókat paraméterként átadnod az eljárásnak, kivált a 0 hosszúságú jegyek_k tömb nemlétező értékét. Később úgysem használod semmire, tehát nyugodtan elronthatod őket.

Linkelem néhány kísérletemet a fentiek szellemében. A bevitel hibakezelésével nem foglalkoztam, tehát kutya kötelességed 18446744073709551616-nál kisebb pozitív egész számot beírni. Az elsőben feltételezem, hogy az eljárás lefutása után is szükséged van a szam változó eredeti- és a jegyek_k tömb létrehozott értékeire:

[link]

A másodikban nem baj, ha a szam értéke elromlik, és a jegyek_k is csak arra kell, hogy az eljárás kiírja:

[link]

Az utóbbi egy más megoldással:

[link]

2019. jan. 2. 00:52
Hasznos számodra ez a válasz?
 10/13 tabaki ***** válasza:

„Miért hozol létre kétszer...”

Ja, bocs, rossz szokásom szerint benéztem a cím szerinti paraméterátadást, amire viszont sejtelmem sincs, hogy itt mi szükség volna. Hát a Math unitra?

2019. jan. 2. 02:28
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!