function decbin(n: int64): int64;
var k,m: int64;
priz: boolean;
begin
k: =1; m: =0;
priz: =true;
repeat
if (n mod 10)> 1 then
begin
writeln('недопустимый ввод - цифра ',n mod 10);
priz: =false;
break;
end;
m: =m+k*(n mod 10);
n: =n div 10;
k: =k*2;
until n=0;
if priz then decbin: =m
else decbin: =-1;
end;
// основная программа
var n,k: int64;
begin
repeat
readln(n);
if n=0 then break
else
begin
k: =decbin(n);
if k> 0 then writeln('десятичное число: ',k);
end;
until false;
end.
1011100011210
недопустимый ввод - цифра 2
11101101
десятичное число: 237
11111111
десятичное число: 255
0
function bintodec(s: string): integer;
var a,d,i: integer;
begin
a: =0;
d: =1;
for i: =length(s) downto 1 do
begin
if s[i]='1' then a: =a+d;
d: =2*d;
end;
bintodec: =a;
end;
var dv: string; fl: boolean; i: integer;
begin
write('введите двоичное число: ');
readln(dv);
while dv< > '0' do
begin
fl: =true;
for i: =1 to length(dv) do
fl: =fl and (dv[i] in ['0','1']);
if fl then writeln(dv,'(2) = ',bintodec(dv),'(10)')
else writeln('ошибка ввода');
write('введите двоичное число: ');
readln(dv);
end;
end.
пример:
введите двоичное число: 123
ошибка ввода
введите двоичное число: 10101
10101(2) = 21(10)
введите двоичное число: 0
Поделитесь своими знаниями, ответьте на вопрос:
Найдите квадрат наибольшего из двух чисел а и в и вывести на печать признак n=1, если наибольшим является а , и n=2, если наибольшим является в.