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
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
begin
F := 3 * sin(x) + 2 * sqr(x) - 1;
end;
var
a, b, h, x, Fa, Fx: real;
begin
Write('Введите через пробел начало интервала, конец и шаг: ');
Readln(a, b, h);
x := a; Fa := F(a);
repeat
Fx := F(x);
if Fx = 0 then Writeln('Найден корень ', x:0:3)
else
if Fx * Fa < 0 then
Writeln('Найден интервал изоляции корня (', a:0:3, ';', x:0:3, ')');
a := x; Fa := Fx; x := x + h
until x > b;
end.
Тестовое решение:
Введите через пробел начало интервала, конец и шаг: 0 1.95 0.15
Найден интервал изоляции корня (0.150;0.300)
Введите через пробел начало интервала, конец и шаг: -5 5 0.1
Найден интервал изоляции корня (-1.500;-1.400)
Найден интервал изоляции корня (0.200;0.300)