Hi.
Задача: создать Двоичный-десятичный калькулятор.(перевод из2 в 10 и наобороти действия с ними)
хотелось бы узнать есть ли в паскале числа 2-ной системы(не 1-битные)б типо чтбы сразу можно было бы переводить.
THNX
http://forum.pascal.net.ru/index.php?s=&showtopic=4535&view=findpost&p=38226
А что, если двоичных чисел в Паскале нет, то и переводить сразу нельзя?
http://forum.pascal.net.ru/index.php?s=&showtopic=4535&view=findpost&p=38226
в помощь...
спасибо. особенно за оперативность.
след вопрос:
где проблема в коде в строках:
...
begin
if d=2
then
begin
write('1: ');
readln(BO);{почемуто эта строка вообще пропускается}
write('2: ');
readln(BT);
...
весь код:
program kursinis;
function IntToBin(bin: integer): string;
var
bin_s: string;
begin
bin_s := '';
if bin = 0 then bin_s := '0'
else
while bin <> 0 do begin
if (bin and 1) = 1 then
bin_s := '1' + bin_s
else bin_s := '0' + bin_s;
bin := bin shr 1;
end;
IntToBin := bin_s
end;
function BinToInt(bin_s: string): longint;
var
bin, mult: integer;
i: integer;
begin
mult := 1; bin := 0;
for i := length(bin_s) downto 1 do
begin
if bin_s[i] = '1' then bin := bin + mult;
mult := mult shl 1;
end;
BinToInt := bin
end;
var
a,b,c,d,e:integer;
BO, BT: string;
begin
writeln('1. Veiksmai su desimtainiais skaiciais');{int}
writeln('2. Veiksmai su dvejetainiais skaiciais');{bin}
read(d);
if d=1 {veiksmai su desimt. skaic.}
then
begin
write('1: ');
readln(a);
write('2: ');
readln(b);
writeln('veiksmai:');
writeln('1. +');
writeln('2. -');
writeln('3. *');
readln(e);
if e=1
then c:=a+b
else if e=2 then c:=a-b
else if e=3 then c:=a*b
else writeln('klaida, turejote ivesti 1,2 arba 3');
writeln('atsakymo pavidalas:');
writeln('1. desimtainis skaicius');
writeln('2. dvejetainis skaicius');
readln(e);
if e=1
then writeln('ats.: ',c)
else if e=2 then writeln('ats.:',IntToBin©){v kode natkogo znaka netu tam IntToBin( c )}
else writeln('klaida, turejote ivesti 1 arba 2');
read(e);{rezultatui pamatyti}
end
else{veiksmai su dvejet. skaic.}
begin
if d=2
then
begin
write('1: ');
readln(BO);
write('2: ');
readln(BT);
writeln('veiksmai:');
writeln('1. +');
writeln('2. -');
writeln('3. *');
readln(e);
if e=1
then c:=BinToInt(BO)+BinToInt(BT)
else if e=2 then c:=BinToInt(BO)-BinToInt(BT)
else if e=3 then c:=BinToInt(BO)*BinToInt(BT)
else writeln('klaida, turejote ivesti 1,2 arba 3');
writeln('atsakymo pavidalas:');
writeln('1. desimtainis skaicius');
writeln('2. dvejetainis skaicius');
readln(e);
if e=1
then writeln('ats.: ',c)
else if e=2 then writeln('ats.:',IntToBin©)
else writeln('klaida, turejote ivesti 1 arba 2');
read(e);{rezultatui pamatyti}
end
else writeln('klaida, turejote ivesti 1 arba 2')
end;
end.
при вводе "2" появляется 1: 2: а хотелось бы сперва 1: а потом уже после ввода двоич. числа 2:
begin
if d=2
then
begin
writeln('1: ');
readln(BO);
write('2: ');
readln(BT);
begin
if d=2
then
begin
writeln('1: ');
readln(BO);
write('2: ');
readln(BT);
а никак нельзя:
1) пользоваться тегами
2) перевести на русский