Kezdőoldal » Számítástechnika » Programozás » Hogyan kell, olyan programot...

Hubuk kérdése:

Hogyan kell, olyan programot írni, pacalban, amely átvált egy háromjegyű számot hatos számrendszerből kettes számrendszerbe?

Figyelt kérdés

2015. jún. 17. 08:45
 1/10 anonim ***** válasza:
48%
Hát le kell ülni és be kell pötyögni.
2015. jún. 17. 08:51
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:

Így reggelről tényleg megéheztem pacalra.

Viccet félretéve:

Nem 16-os számrendszerből kell kettesbe?

Van egy programom, ami hasonló. Abba 2-es 8-as 16-os számrendszer között lehet váltani, s te választhatod ki, hogy mit csináljon a program, szóval kicsit bonyolult, ha kell elküldhetem skypeon, mert hosszú.

2015. jún. 17. 08:53
Hasznos számodra ez a válasz?
 3/10 A kérdező kommentje:
Köszi, de mit pötyögjek be?
2015. jún. 17. 08:54
 4/10 anonim ***** válasza:
91%

Akkor kanyarodjunk vissza az alapokra:


Hogyan váltasz át számrendszerek között? Vagy hogyan választ át egy számot hatosból 10-esben, majd tízesből kettesbe?


Elsőnek ezt írd le, és akkor haladunk tovább a feladattal :)

2015. jún. 17. 09:23
Hasznos számodra ez a válasz?
 5/10 tabaki ***** válasza:

@Sir Butcher:

Szívemből beszélsz. Egy ilyen feladatban meg kell érteni az alapokat és kész.


@#2:

Persze, a kettes/nyolcas/tizenhatos átváltás az speciális eset, ezért problémátlan, de nehogy már azonnal tévedést gyanítsunk, ha gondolkodni is kell. Miért ne lehetne tényleg hatos az a számrendszer?


@hubuk:

Írd le, hogy papíron hogyan csinálod meg ugyanezt az átváltást, segítünk lekódolni.

2015. jún. 17. 10:17
Hasznos számodra ez a válasz?
 6/10 A kérdező kommentje:
Köszönöm a segítséget, de már sikerült megcsinálni :)
2015. jún. 17. 11:13
 7/10 anonim ***** válasza:

Megcsináltattad mással, mi? :)

G.

2015. jún. 17. 14:05
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:
Azt írta neki sikerült megcsinálni, így gondolom nem mással csináltatta meg.
2015. jún. 17. 14:22
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:
100%
Hogyne persze.
2015. jún. 17. 14:28
Hasznos számodra ez a válasz?
 10/10 SimkoL ***** válasza:
100%

Először is leszögezem nem én írtam meg neki sunyiban :)

Írtam egy szösszenetet 2..16 számrendszerek közötti átváltásra, bővíthető csak át kell írni, igaz nagy értelmét nem látom.


program szamrendszer;


{$mode objfpc}{$H+}


uses

{$IFDEF UNIX}{$IFDEF UseCThreads}

cthreads,

{$ENDIF}{$ENDIF}

Classes, Math;


var

jegyek : array[0..15] of char;

tomb : set of char;

alap, alap1, hiba, i : integer;

s_alap, s_alap1, valtando : string;


procedure Feltoltes;

var i : byte;

begin

for i := 0 to 9 do jegyek[i] := chr(48 + i);

for i := 10 to 15 do jegyek[i] := chr(55 + i);

end;


function Tizesre(szamrendszer : byte; szam : string) : int64;

var i, hossz, ertek : byte;

begin

Result := 0;

tomb := [];

szam := UpCase(szam);

hossz := Length(szam);

for i := hossz downto 1 do

begin

ertek := Ord(szam[i]) - 48;

if Ord(szam[i]) > 64 then ertek := Ord(szam[i]) - 55;

Result := Result + Trunc(ertek * (Power(szamrendszer, hossz - i)));

end;

end;


function Melyikre(szamrendszer : byte; szam : int64) : string;

var i, vm : byte;

verem : array of byte;

begin

if szam = 0 then Exit;

Result := '';

SetLength(verem, 0);

while szam <> 0 do

begin

vm := Length(verem);

SetLength(verem, vm + 1);

verem[vm] := szam mod szamrendszer;

szam := szam div szamrendszer;

end;

for i := Length(verem) - 1 downto 0 do

Result := Result + jegyek[verem[i]];

SetLength(verem, 0);

end;


begin

Feltoltes;

hiba := -1;

while hiba <> 0 do

begin

Write('Kerem az atvaltando szamrendszer alapjat: ');

ReadLn(s_alap);

Val(s_alap, alap, hiba);

if not (alap in [2..16]) then

begin

WriteLn('Csak 2..16 kozotti ertek hasznalhato');

hiba := -1;

end;

end;

hiba := -1;

while hiba <> 0 do

begin

Write('Melyik szamrendszerre valtsuk: ');

ReadLn(s_alap1);

Val(s_alap1, alap1, hiba);

if not (alap1 in [2..16]) then

begin

WriteLn('Csak 2..16 kozotti ertek hasznalhato');

hiba := -1;

end;

end;

tomb := [];

for i := 0 to alap - 1 do tomb := tomb + [jegyek[i]];

hiba := -1;

while hiba <> 0 do

begin

Write('Kerem az atalakitando szamot: ');

ReadLn(valtando);

valtando := UpCase(valtando);

for i := 1 to Length(valtando) do

if not (valtando[i] in tomb) then

begin

Writeln('Hiba ! A szam nem felel meg a ', alap, '-s szamrendszernek');

hiba := -1;

end

else

hiba := 0;

end;

WriteLn(Melyikre(alap1, (Tizesre(alap, valtando))));

ReadLn;

end.


Nem fűznék hozzá semmit, nagyon alap.

2015. jún. 17. 15:47
Hasznos számodra ez a válasz?

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!