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.
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?
Eljárás és függvény közti különbség megvan?
Eme programba nem írtam függvényt.
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.
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.
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.
A kérdést én tettem fel.
A kód lefut, lefordul, működik.
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!
„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:
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:
Az utóbbi egy más megoldással:
„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?
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!