задача на системы счисления |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
задача на системы счисления |
Flipper |
Сообщение
#1
|
Гость |
задание: написать программу на языке паскаль, чтобы она переводила число из четверичной системы счиления в шестнадцетиричную с.с.
вот собственно что надо.......... ПОЖАЛУЙСТО, HELP |
Amro |
Сообщение
#2
|
Пионер Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: 2 |
Вот тута прогу одну нашёл, правда ещё сам не разобрался, но по-моему она переводит из любой системы счисления в любую другую ....... в общем универсальная она
Код program perevod; var q,p,n,osnov,s,m,i:longint; st:string; ch:char; mas:array[1..30] of byte; function test(st:string; osnov:integer):boolean; var n,i:integer; mn:set of char; begin test:=true; mn:=[]; for i:=0 to osnov-1 do if i<=9 then mn:=mn+[chr(i+48)] else mn:=mn+[chr(i+55)]; n:=ord(st[0]); for i:=1 to n do if (st[i]<>',') and (not(st[i] in mn)) then begin writeln('Неправильная запись числа. Повторите ввод'); test:=false; i:=n; end; end; function chislo(ch:char):integer; begin if ord(ch) in [48..57] then chislo:=ord(ch)-48 else chislo:=ord(ch)-55; end; function simvol(n:byte):char; begin if n in [10..15] then simvol:=chr(n+55) else simvol:=chr(n+48); end; begin writeln ('Введите основание р'); readln(p); writeln ('Введите число (для цифр после 9 писать ABC...)'); repeat readln (st); until test(st,p); writeln ('В какую систему перевести?'); readln (q); s:=0; m:=1; n:=ord(st[0]); for i:=n downto 1 do begin s:=s+chislo(st[i])*m; m:=m*p; end; m:=0; repeat inc(m); mas[m]:=s mod q; s:=s div q; until s<=q-1; inc(m); mas[m]:=s; for i:=m downto 1 do write(simvol(mas[i])); end. Прикольная между прочим прога, вроде всё прально делает!!!! Внимание всем, кто еще раз решит, что эта программа работает с любыми системами счисления!!! Программа корректно переводит числа из любой системы счисления с основанием 2 .. 16 в любую систему счисления с основанием 2 .. 16 !!! Не более того. НЕ считайте эту программу действительно универсальным переводчиком, и не ждите от нее корректной работы с другими системами счисления!!! Сообщение отредактировано: volvo - -------------------- Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь. Закон программиста: Семь раз отрежь, ошибся, отмерь. |
Текстовая версия | 7.05.2024 23:48 |