очень нужна помощь! разобраться не могу в решении

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Ариша
Сообщения: 1
Зарегистрирован: 20 май 2015, 19:05

20 май 2015, 20:49

очень нужна помощь. накидала кускали не знаю как собрать всё. буду очень благодарна
Задание: Исходный файл содержит числа в шестнадцатеричной системе счисления, отделенные друг от друга запятыми. Составить программу, которая для каждого такого числа из заданного диапазона после знака равенства указывает его значение в десятичной системе счисления, двоичной системе счисления или в дополнительном коде по выбору пользователя, например:
00101111 = 33353, 0111 = 73, 10000 = 512, и т. д.
Program
Var


procedure ten;
var i:byte;
begin
k:=ord(s[0]);
chislo:=0;
for i:=1 to k do
begin
case s of
'0':d:=0;
'1':d:=1;
'2':d:=2;
'3':d:=3;
'4':d:=4;
'5':d:=5;
'6':d:=6;
'7':d:=7;
'8':d:=8;
'9':d[i]:=9;
'a':d[i]:=10;
'b':d[i]:=11;
'c':d[i]:=12;
'd':d[i]:=13;
'e':d[i]:=14;
'f':d[i]:=15;
end;
chislo:=d[i]*(exp(ln(16)*(i-1)));
end;
write(s);
write(' = ',chislo:10:2);
end;

procedure two;
var i:byte;
begin
k:=ord(s[0]);
for i:=1 to k do
begin
case s[i] of
'0':d[i]:=0;
'1':d[i]:=1;
'2':d[i]:=2;
'3':d[i]:=3;
'4':d[i]:=4;
'5':d[i]:=5;
'6':d[i]:=6;
'7':d[i]:=7;
'8':d[i]:=8;
'9':d[i]:=9;
'a':d[i]:=10;
'b':d[i]:=11;
'c':d[i]:=12;
'd':d[i]:=13;
'e':d[i]:=14;
'f':d[i]:=15;
end;
chislo:=d[i]*(exp(ln(16)*(i-1)));
end;

procedure toDop(Inp:string; var Dop:integer);
var n,P,err:integer;
fl:boolean;
Uns:string;
begin
Uns:='';
Dop:=0;
fl:=false;
if(Inp[1]='-')then
begin
Delete(Inp,1,1);
fl:=true;
end;
for n:=length(Inp) downto 1 do Uns:=Uns+Inp[n];
for n:=0 to length(Uns)-1 do
begin
Val(Uns[n+1],P,Err);
if(err<>0)then P:=9+Pos(Uns[n+1],Hex);
Dop:=Dec+P*round(exp(n*ln(16)));
end;
if(fl)then Dop:=Dop*(-1);
end;

Begin
writeln('Enter way to file:');
readln(Way);
assign(F,Way);
reset(F);
Read(F,Init);
writeln(' Выбирете действие: 10,2,дополнительный код(d)?');
readln(Act);
Begin
case Act of
10: ten( ) {Вызов процедуры перевод в десятичную систему счисления}
2: two(){Вызов процедуры перевод в двоичную систему счисления}

d: toDop();{Вызов процедуры дополнительного кода}
else;
writeln(‘Неверное действие’);
End.
Key Breaker
Сообщения: 3
Зарегистрирован: 11 авг 2015, 21:27

11 авг 2015, 21:42

Ща посижу поломаю бошку...
Ответить