Ahojte, chcel by som urobiť prevod z 10tkovej do dvojkovej...čítal som si tu už nejaké príspevky a mám už predstavu.....no neviem presne či to je správne,,,,,
Chcem spraviť repeat cyklus kde sa bude ako prvé deliť zo zvyškom napr. už spomínané číslo 123 - to si dám ako premennú "a" a to budem deliť - modom,,,,, mod zo zvyškom,,,no neviem ako ten zvyšok zapisovať,,,,kam a ani ako ho zapisovať ? :( no a keď tento najdôležitejší zapís budem mať,,,spravím dalšie delenie a to bez zvyškové,,,,teda príklad,,,,,,,,123:2= 61,,,potom 61:2= 30 a tak,,,,,,a skončí to "until a<2" helpenete mi ako to mám zapísať tie zvyšky do nejakej premennej ?
Fórum › Pascal
Prevod z 10tkovej do 2jkovej sústavy
Už to mááám :D
chcem sa len pocvhálit :)
program Project1;
uses crt;
var
ans:string;
a,c:integer;
b:char;
begin
writeln('Zadajte cislo ');
read(a);
clrscr;
if a=0 then write ('0 v desiatkovej = 0 v dvojkovej')
else
writeln('Zvolili ste si cislo: ', a);
readln;
writeln('Cislo bude prevedene do desiatkovej sustavy. ');
ans:='';
repeat
c:=(a mod 2);
if c>0 then ans:=('1'+ans)
else ans:=('0'+ans);
a:=(a div 2);
writeln(ans);
until a<2 ;
//writeln(ans);
readkey;
end.
+ naopak,,,prevod z 2jkovej do 10tkovej,,,,je to vporiadku ? či sa tam dá niečo aj vylepšiť ?
program Project1;
uses crt;
var cislo:string ; //dvojkove
i,d:longint; //
a:integer;
begin
writeln('Zadaj cislo vo dvojkovej sustave ');
delay(1500);
clrscr;
read(cislo); //Dvojkové číslo
writeln('Zadali ste cislo : ',cislo);
d:=length(cislo);
a:=0;
for i:=1 to d do
begin
if cislo[i]='0' then a:=2*a
else a:=2*a+1;
end;
writeln(cislo, 'v dvojkovej sustave je ', a ,' v desiatkovej');
readkey;
end.
První program:
- Převádí do dvojkové soustavy, tak proč říká, že číslo převede do desítkové?
- if a=0 then write... else writeln... Nevím, jak je to myšlené. Jestli chceš jenom vypsat upozornění a pak v každém případě spustit převod, máš to dobře. Jestli chceš celý zbytek programu při nulovém čísle vynechat (tj. schovat do toho else), musel by být obalený do begin a end, jinak se provede jenom první příkaz za else (v tomhle případě to writeln).
- Cyklus until a<2 skončí předčasně a nezapočítá poslední jedničku. Podmínka má být a<1.
Druhý program:
- Převodní algoritmus je v pořádku.
- Zadávání je takové divné: nejdřív na vteřinu a půl problikne výzva k zadání čísla a potom celá obrazovka zčerná. Vyhodil bych to Delay a Clrscr.
- Dá se psát přímo for i:=1 to length(cislo) a ušetřit proměnnou d. To jen tak pro informaci, chyba to není.
A jen tak pro zajímavost: čísla jsou v počítači uložená ve dvojkovém tvaru. Převody do lidsky čitelné dvojkové soustavy a zpět se dají velice pohodlně dělat pomocí bitových operací: shl, shr (posun o určitý počet bitů doleva nebo doprava), and a or (když místo booleanu dostanou čísla, provedou příslušnou operaci na všech jeho bitech). V desítkové soustavě se násobení deseti udělá připsáním nuly na konec čísla neboli posunem o cifru doleva. Ve dvojkové soustavě se násobení dvěma udělá taky připsáním nuly na konec čísla neboli posunem o cifru (bit) doleva: číslo*2 = číslo shl 1. Dělení: číslo div 2 = číslo shr 1. Zbytek: číslo mod 2 = číslo and 1 (zbytek po dělení desítkového čísla desítkou je poslední cifra, zbytek po dělení dvojkového čísla dvojkou je poslední bit).
Moje stránka.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Prevod z 10 do 2 sústavy — založil Eddy777
Prevod z hexadecimalnej sustavy — založil street punk
Prevod do 10-tkovej sustavy (asm8080) — založil kukucak
Prevod z desiatkovej do dvojkovej sústavy — založil kubala
Ciselne sustavy — založil devilfish
Moderátoři diskuze