![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Morfey85 |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
Исходная информация: целое число , записанное в виде строки шестнадцатиричных цифр в дополнительном коде.
Задание: записать это число в прямом коде в виде строки десятичных цифр. |
![]() ![]() |
Morfey85 |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
Долго пыжился но написал
Код uses crt; var znak,ch:Char; s:string; x:longint; Procedure Info; begin Writeln('Перевести целое число из шестнадцатиричной системы счислений'); Writeln('в дополнительном коде, в прямой код в виде строки десятичных'); Writeln('цифр со знаком.'); end; Function BinToInt(bin_s:string):longint; var bin,mult:longint; 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; Function HexToBin(s:string):string; var i:byte; s1,a:string; begin s1:=''; for i:=length(s) downto 1 do begin case Upcase(s[i]) of '0': a:='0000'; '1': a:='0001'; '2': a:='0010'; '3': a:='0011'; '4': a:='0100'; '5': a:='0101'; '6': a:='0110'; '7': a:='0111'; '8': a:='1000'; '9': a:='1001'; 'A': a:='1010'; 'B': a:='1011'; 'C': a:='1100'; 'D': a:='1101'; 'E': a:='1110'; 'F': a:='1111'; else Writeln('Vvedeno nevernoe chislo!!!'); end; s1:=a+s1; end; HexToBin:=s1; end; Function DopToObr(s:string):string; var i,j:integer; sa:string; begin if s[1]='0' then znak:='+' else znak:='-'; sa:=''; for i:=length(s) downto 2 do begin sa:=s[i]+sa; end; Writeln('Bin = ',znak,sa); for j:=length(sa) downto 1 do if sa[j]='0' then sa[j]:='1' else begin sa[j]:='0'; Break; end; Writeln('Obr = ',znak,sa); DopToObr:=sa; end; Function ObrToPr(s:string):string; var i:integer; begin For i:=length(s) downto 1 do If s[i]='0' then s[i]:='1' else s[i]:='0'; Writeln('Pr = ',znak,s); ObrToPr:=s; end; begin repeat clrscr; Info; Write('Hex = ');Readln(s); s:=HexToBin(s); Writeln('Dop = ',s); s:=DopToObr(s); s:=ObrToPr(s); x:=BinToInt(s); Writeln('Dec = ',znak,x); write('Press q for exit or any key for continue...'); ch:=ReadKey until upcase(ch)='Q'; end. |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 13:05 |