IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> задача на системы счисления
Flipper
сообщение 16.10.2004 20:07
Сообщение #1


Гость






задание: написать программу на языке паскаль, чтобы она переводила число из четверичной системы счиления в шестнадцетиричную с.с.

вот собственно что надо..........
ПОЖАЛУЙСТО, HELP
 К началу страницы 
+ Ответить 
Altair
сообщение 16.10.2004 20:16
Сообщение #2


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  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 - 16.10.2004 20:18


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Flipper
сообщение 16.10.2004 21:57
Сообщение #3


Гость






спасибо,
sorry, вспылил, был не прав.
 К началу страницы 
+ Ответить 
Altair
сообщение 17.10.2004 8:04
Сообщение #4


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


То-то же! :yes:


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
--Vika--
сообщение 18.10.2004 14:40
Сообщение #5


Гость






Привет, всем!
клево, нам тоже самое задали, зашла на ваш форум, хотела попросить помочь. а тут уже есть такое :D
только у меня другие с.с.
вот хотела спросить. а как задавать эту систему radix и где число вводить?

может мой вопрос покажется совсем глупым, но вот только с программированием у меня труба...
 К началу страницы 
+ Ответить 
Atos
сообщение 18.10.2004 14:48
Сообщение #6


Прогрессор
****

Группа: Модераторы
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


Число - это n, а radix- это какая с/c
Например вызов FromDec(1210, 3) возвращает десятичное число, которое равно числу 1210 в троичной с/c
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
--Vika--
сообщение 18.10.2004 14:55
Сообщение #7


Гость






digit: string[16]='0123456789ABCDEF' а это для 16 с.с

значит везде в программе где radix и n. заменяешь на то что надо rolleyes.gif

ой спасибо, очень выручили что отреагировали на такой простой вопрос :yes:
 К началу страницы 
+ Ответить 
Altair
сообщение 18.10.2004 16:40
Сообщение #8


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


тут реагируютна все вопросы! так что заходите еще!
Сайт наш советуйте всем smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
FreeMan
сообщение 18.10.2004 16:56
Сообщение #9


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


Цитата
Сайт наш советуйте всем

своим подругам :D


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 18.10.2004 17:07
Сообщение #10


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Это прежде всего, девушкам тут особенно рады, и задания выполняются обычно за t->0 (время близкоек нулю, т.е. мгновенно) smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GoodWind
сообщение 18.10.2004 19:23
Сообщение #11


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


Цитата
девушкам тут особенно рады

угу.... очеень... особенно я :D

Зватит флеймить!

Сообщение отредактировано: Oleg_Z - 19.10.2004 10:01


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
--Vika--
сообщение 19.10.2004 9:55
Сообщение #12


Гость






ребята, не получилось....еще мне сказали чтоб делала сама, типа кто это вам делал sad.gif

а у кого паскаль есть, я себе скачивала, а у меня не запускается...

можете кто-нибудь проверить эту программу???
 К началу страницы 
+ Ответить 
Altair
сообщение 19.10.2004 10:00
Сообщение #13


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Так, а задание дайте.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
--Vika--
сообщение 19.10.2004 10:29
Сообщение #14


Гость






задание тоже самое huh.gif

программа на паскале, перевод любого числа из 3 с.с в 16с.с

просто что то у меня не сработала
можете ее проверить?
 К началу страницы 
+ Ответить 
APAL
сообщение 19.10.2004 10:43
Сообщение #15


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


И у меня есть попутный вопрос - ведь наверняка должен быть алгоритм перевода чисел из любой системы в любую минуя десятичную?


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.10.2004 12:05
Сообщение #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
сообщение 19.10.2004 13:42
Сообщение #17


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


На нашем форум, все, что выложенно в ЧаВо, все работает!
volvo, прав, прогу надо написать еще, чтобы процедуры работали smile.gif ;)


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Amro
сообщение 19.10.2004 19:59
Сообщение #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 - 15.12.2005 12:48


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.10.2004 20:07
Сообщение #19


Гость






Принцип остается тот же -

здесь...

Код

for i:=n downto 1 do
 begin
 s:=s+chislo(st[i])*m;
 m:=m*p;
 end;


вычисляется 10-ное число...
 К началу страницы 
+ Ответить 
GoodWind
сообщение 19.10.2004 20:25
Сообщение #20


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


Цитата(APAL @ 19.10.04 10:43)
И у меня есть попутный вопрос - ведь наверняка должен быть алгоритм перевода чисел из любой системы в любую минуя десятичную?

завтра ОМТ`шницу нашу спрошу


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 8:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"