задача на системы счисления |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
задача на системы счисления |
Flipper |
Сообщение
#1
|
Гость |
задание: написать программу на языке паскаль, чтобы она переводила число из четверичной системы счиления в шестнадцетиричную с.с.
вот собственно что надо.......... ПОЖАЛУЙСТО, HELP |
Altair |
Сообщение
#2
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
один из способов (простых) это перевести сначала в десятичную а затем в шестандуатиричную.
Простой, он из-за того, что все можно здесь найти уже решеным. Вот 2 процедуры: Код {Одна переводит из любой системы счисления в десятичную, вторая наоборот } function FromDec(n, radix:longint):string; {перевод числа n из radix c/c в 10-ую} var s: String; const digit: string[16]='0123456789ABCDEF'; begin s:=''; repeat s:=digit[(n mod radix)+1]+s; n:=n div radix; until n=0; FromDec:=s; end; function ToDec(n:string; radix:longint):longint; {перевод числа n из 10-ной с/с в radix} var m, i: longint; const digit: string[16]='0123456789ABCDEF'; begin m:=0; while n[1]='0' do delete(n,1,1); for i:=1 to length(n) do m:=m*radix+pos(n[i],digit)-1; ToDec:=m; end; ЗЫ: Не держи зла на ближнего своего. Иешуа. Сообщение отредактировано: Oleg_Z - -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Flipper |
Сообщение
#3
|
Гость |
спасибо,
sorry, вспылил, был не прав. |
Altair |
Сообщение
#4
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
То-то же! :yes:
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
--Vika-- |
Сообщение
#5
|
Гость |
Привет, всем!
клево, нам тоже самое задали, зашла на ваш форум, хотела попросить помочь. а тут уже есть такое :D только у меня другие с.с. вот хотела спросить. а как задавать эту систему radix и где число вводить? может мой вопрос покажется совсем глупым, но вот только с программированием у меня труба... |
Atos |
Сообщение
#6
|
Прогрессор Группа: Пользователи Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: 9 |
Число - это n, а radix- это какая с/c
Например вызов FromDec(1210, 3) возвращает десятичное число, которое равно числу 1210 в троичной с/c |
--Vika-- |
Сообщение
#7
|
Гость |
digit: string[16]='0123456789ABCDEF' а это для 16 с.с
значит везде в программе где radix и n. заменяешь на то что надо ой спасибо, очень выручили что отреагировали на такой простой вопрос :yes: |
Altair |
Сообщение
#8
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
тут реагируютна все вопросы! так что заходите еще!
Сайт наш советуйте всем -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
FreeMan |
Сообщение
#9
|
- Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: 4 |
Цитата Сайт наш советуйте всем своим подругам :D -------------------- бб
|
Altair |
Сообщение
#10
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Это прежде всего, девушкам тут особенно рады, и задания выполняются обычно за t->0 (время близкоек нулю, т.е. мгновенно)
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
GoodWind |
Сообщение
#11
|
Автооответчик Группа: Пользователи Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: 16 |
Цитата девушкам тут особенно рады угу.... очеень... особенно я :D Зватит флеймить! Сообщение отредактировано: Oleg_Z - -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
--Vika-- |
Сообщение
#12
|
Гость |
ребята, не получилось....еще мне сказали чтоб делала сама, типа кто это вам делал
а у кого паскаль есть, я себе скачивала, а у меня не запускается... можете кто-нибудь проверить эту программу??? |
Altair |
Сообщение
#13
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Так, а задание дайте.
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
--Vika-- |
Сообщение
#14
|
Гость |
задание тоже самое
программа на паскале, перевод любого числа из 3 с.с в 16с.с просто что то у меня не сработала можете ее проверить? |
APAL |
Сообщение
#15
|
Смотрю... Группа: Пользователи Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: 6 |
И у меня есть попутный вопрос - ведь наверняка должен быть алгоритм перевода чисел из любой системы в любую минуя десятичную?
-------------------- |
volvo |
Сообщение
#16
|
Гость |
--Vika--
Только что проверил программу Oleg_Z. Все работает. Видимо, ты неправильно используешь функции. Просто добавь к коду Oleg_Z вот это: Код var decimal: longint; const x = '212212'; {это число в 3-ой системе счисления} Begin decimal := todec(x, 3); writeln( 'x(16) = ', fromdec(decimal, 16) ); End. |
Altair |
Сообщение
#17
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
На нашем форум, все, что выложенно в ЧаВо, все работает!
volvo, прав, прогу надо написать еще, чтобы процедуры работали ;) -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Amro |
Сообщение
#18
|
Пионер Группа: Пользователи Сообщений: 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 - -------------------- Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь. Закон программиста: Семь раз отрежь, ошибся, отмерь. |
volvo |
Сообщение
#19
|
Гость |
Принцип остается тот же -
здесь... Код for i:=n downto 1 do begin s:=s+chislo(st[i])*m; m:=m*p; end; вычисляется 10-ное число... |
GoodWind |
Сообщение
#20
|
Автооответчик Группа: Пользователи Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: 16 |
Цитата(APAL @ 19.10.04 10:43) И у меня есть попутный вопрос - ведь наверняка должен быть алгоритм перевода чисел из любой системы в любую минуя десятичную? завтра ОМТ`шницу нашу спрошу -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
Текстовая версия | 19.05.2024 21:07 |