Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var
- y:real;
- ss:integer;
- function Reverse(inp: string): string;
- var
- i, c: integer;
- n: char;
- begin
- c := length(inp) div 2;
- for i := 1 to c do
- begin
- n := inp[i];
- inp[i] := inp[length(inp) - i + 1];
- inp[length(inp) - i + 1] := n;
- end;
- Reverse := inp;
- end;
- function IntBin(x: integer): string;
- var
- inp: string;
- begin
- inp := '';
- while x > 0 do
- begin
- if x mod 2 = 0 then
- insert('0', inp, 1)
- else
- insert('1', inp, 1);
- x := x div 2;
- end;
- intBin := inp;
- end;
- function FracBin(x: real; n: integer): string;
- var
- inp: string;
- i: integer;
- begin
- inp := '';
- // точность до n знаков
- for i := 1 to n do
- begin
- x := frac(x) * 2;
- inp := inp + FloatToStr(int(x));
- end;
- fracBin := inp;
- end;
- function IntDec(x: integer): string;
- var
- inp: string;
- out, i: integer;
- begin
- inp := IntToStr(x);
- out := 0;
- for i := 1 to length(inp) do
- begin
- out := out + StrToInt(inp[i]) * round(exp(ln(2) * (length(inp) - i)));
- end;
- intDec := IntToStr(out);
- end;
- function FracDec(x: real): string;
- var
- inp,buff: string;
- k,i: integer;
- out: real;
- begin
- // удаляем первые два символа
- inp := FloatToStr(x);
- for i:=1 to length(inp) do
- begin
- if inp[i+1] = '.' then begin
- k:=i+1;
- break;
- end;
- end;
- delete(inp,1,k);
- // проходимся по элементам
- out := 0;
- inp := Reverse(inp);
- for i := 1 to length(inp) do
- begin
- out := out + StrToInt(inp[i]) * exp(ln(2) * ((- i)));
- end;
- buff:=FloatToStr(out);
- delete(buff,1,1);
- fracDec := buff;
- end;
- function DecToBin(x: real): string;
- var out:string;
- begin
- out:='';
- if frac(x) = 0 then
- out := IntBin(round(x))
- else
- out:=IntBin(round(int(x)))+','+FracBin(x,10); // 10 после запятой
- DecToBin:=out;
- end;
- function BinToDec(x:real):string;
- var out:string;
- begin
- out:='';
- if frac(x) = 0 then
- out := IntDec(round(x))
- else
- out := IntDec(round(x))+FracDec(x);
- BinToDec:=out;
- end;
- begin
- write('Введите число: ');
- read(y);
- write('Введите систему счисления,в которую нужно перевести: ');
- read(ss);
- case ss of
- 2: writeln(DecToBin(y));
- 10: writeln(BinToDec(y))
- else writeln('Ошибка');
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement