![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
MiX |
![]() ![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вообщем нужна перевести из 2 в 16 с.с. из Double Word-a в Double Word.
Я вот силами несилами вот такое склеил, но она недоконца работает. Мне препод говорит что бя ввел тридцать две единицы а она непашет правильно. Помогите пожалуста, может ее можно както упростить. Код uses crt; var s:string; b,c,d,h,i,t:longint; a:word; n:array [1..255] of longint; f:Boolean; begin clrscr; writeln('vvetite chislo v formate DOUBLE WORD '); readln(s); if length(s) > 32 then writeln('4islo bolwe Double word') else f:=true; for i:=1 to length(s) do if (s[i]<>'1') and (s[i]<>'0') then begin clrscr; writeln('ERROR'); f:=false; readkey; end; if f then begin a:=0; b:=1; for i:=length(s) downto 1 do begin a:=a+((ord(s[i]))-ord('0'))*b; b:=b*2; end; writeln('desyatkove chislo ',a); write('16 chislo- '); if (a<=9) and (a>=1) then writeln(a) else case a of 10:write('A'); 11:write('B'); 12:write('C'); 13:write('D'); 14:write('E'); 15:write('F'); end; while a>=16 do begin d:=a div 16; h:=a mod 16; n[i]:=h; i:=i+1; if d<16 then begin n[i]:=d; i:=i+1; a:=d; end else a:=d; end; for i:=i-1 downto 1 do begin a:=n[i]; if (a>=0)and(a<=9) then write(a) else begin case a of 10:write('A'); 11:write('B'); 12:write('C'); 13:write('D'); 14:write('E'); 15:write('F'); end end; end; writeln; readln; end; end. |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата может ее можно както упростить. Можно попробовать: uses crt; |
Айра |
![]()
Сообщение
#3
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: ![]() ![]() ![]() |
Эх, volvo, опередил, а я так старалась
![]() Один момент: а вот тут разве не должно быть наоборот: if length(s) < 4 then по-моему нули дописываются в конец числа.. Сообщение отредактировано: Айра - 21.09.2007 21:42 |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата по-моему нули дописываются в конец числа То есть, ты хочешь сказать, что '11' не должно переводиться, как '0011', а должно - как '1100'? ![]() |
Айра |
![]()
Сообщение
#5
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: ![]() ![]() ![]() |
![]() ![]() |
MiX |
![]()
Сообщение
#6
|
![]() Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо за помощь, вы ме очень помогли
![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 17:36 |