Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Двоичный-десятичный калькулятор

Автор: actor 2.06.2007 0:41

Hi.
Задача: создать Двоичный-десятичный калькулятор.(перевод из2 в 10 и наобороти действия с ними)
хотелось бы узнать есть ли в паскале числа 2-ной системы(не 1-битные)б типо чтбы сразу можно было бы переводить.
THNX

Автор: мисс_граффити 2.06.2007 0:44

http://forum.pascal.net.ru/index.php?s=&showtopic=4535&view=findpost&p=38226

Автор: volvo 2.06.2007 0:44

А что, если двоичных чисел в Паскале нет, то и переводить сразу нельзя?

http://forum.pascal.net.ru/index.php?s=&showtopic=4535&view=findpost&p=38226
в помощь...

Автор: actor 2.06.2007 1:02

спасибо. особенно за оперативность.

Автор: actor 2.06.2007 5:07

след вопрос:
где проблема в коде в строках:
...
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:

Автор: Артемий 2.06.2007 13:58

begin
if d=2
then
begin
writeln('1: ');
readln(BO);
write('2: ');
readln(BT);

Так?

Автор: actor 2.06.2007 14:51

Цитата(Артемий @ 2.06.2007 9:58) *

begin
if d=2
then
begin
writeln('1: ');
readln(BO);
write('2: ');
readln(BT);

Так?


Ничего не изменилось, по прежнему не могу ввести 1-ое двоичнное число

Автор: мисс_граффити 2.06.2007 15:13

а никак нельзя:
1) пользоваться тегами
2) перевести на русский

Автор: volvo 3.06.2007 2:30

Цитата
begin
writeln('1. Veiksmai su desimtainiais skaiciais');{int}
writeln('2. Veiksmai su dvejetainiais skaiciais');{bin}
readLn(d);

Почему - уже объяснялось, ищи по форуму...