![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Kubus |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
в общем есть у меня курсавая. Задача написать программку перевода чисел из разных систем счисления в другие(с основаниями от 2 до 16) с дробной частью. Задача не новая да и не особо сложноя. Сделал я ее и понес к преподу. Там-то и выяснилось, что сделана она через одно местно, так как программка переводит отдельно дробную, отдельно целую часть, а это неправильно. Так вот может кто-нибудь возьмется помочь и отредактирует так, как надо? или мож у кого готовая есть? а то мне сдавать в понедельник, а у самого завал с мейплом, не успеваю. Буду очень, очень благодарен.
вот исходный текст:
Сообщение отредактировано: Kubus - 24.12.2005 23:08 |
![]() ![]() |
Kubus |
![]()
Сообщение
#2
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
подскажите, пожалуйста, что нужно изменить, чтоб этот кусочек счетал не из десятичной в двоичную, а из любой в любую?
|
Гость |
![]()
Сообщение
#3
|
Гость ![]() |
подскажите, пожалуйста, что нужно изменить, чтоб этот кусочек счетал не из десятичной в двоичную, а из любой в любую? Код (* Function Dec2Hex (num: Word): String; { перевод из 10-ичной в 16-ичную } Function Dec2Bin (num: word): String; { перевод из 10-ичной в 2-ичную } Function Hex2Dec (hs:string): longint; { перевод из 16-ичной в 10-ичную } Function Bin2Dec (S: String): longint; { перевод из 2-ичной в 10-ичную } *) Function Dec2Hex (num: Word): String; var result: string; remainder: word; c: char; begin result := ''; while num <> 0 do begin remainder := num mod 16; num := num div 16; { или num := num shr 4 } if remainder < 10 then c := chr (remainder + ord ('0')) else c := chr (remainder + ord ('A') - 10); result := c + result; end; Dec2Hex := '$' + result end; Function Dec2Bin (num: word): String; var result: string; remainder: word; c: char; begin result := ''; while num <> 0 do begin remainder := num mod 2; num := num div 2; { или num := num shr 1 } c := chr (remainder + ord ('0')); result := c + result; end; Dec2Bin := result end; Function Hex2Dec (hs:string): longint; var res,k: longint; r,i: word; c: char; begin res := 0; k := 1; for i := length (hs) downto 1 do begin c := UpCase (hs[i]); case c of 'A'..'F': r := ord(c) - (ord('A') - 10); { ord (c) - 55 } '0'..'9': r := ord(c) - ord('0'); { ord (c) - 48 } else break end; inc (res, r * k); { res := res + r * k} k := k * 16; { или k := k shl 4 } end; Hex2Dec := res; end; Function Bin2Dec (S: String): longint; var i, bit: word; p, result: longint; Begin result := 0; p := 1; for i := length (S) downto 1 do begin bit := ord (S[i]) - ord ('0'); inc (result, bit * p); p := p * 2; { или p := p shl 1 } end; Bin2dec:=result; End; begin writeln (dec2bin (2004)); writeln (dec2hex (2004)); writeln (hex2dec ('fff0')); writeln (bin2dec ('11111010100')) end. Может это приблизит тебя к истине ![]() |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 21:35 |