Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перевод чисел из различных систем счисления в десятичную

41K
09 декабря 2008 года
Agentum
11 / / 09.12.2008
Прошу прощения создал лишнюю тему в другом разделе(извиняюсь,новичок,исправлюсь).Помогите написать на паскале программу для перевода чисел из различных систем счисления в десятичную.это для меня очень важно,так как от этого зависит сдача сессии...я к сожалению еще не достиг такого уровня знаний,чтобы самому написать эту программу.помогите пожалуйста студенту первого курса.:(
14
09 декабря 2008 года
Phodopus
3.3K / / 19.06.2008
Надо помочь сообществу. Сказать хотя бы что преполагается на входе и выходе программы.
41K
09 декабря 2008 года
Agentum
11 / / 09.12.2008
Это ко мне обращение?А то я не особо понял.:)
307
09 декабря 2008 года
Artem_3A
863 / / 11.04.2008
Цитата: Agentum
Это ко мне обращение?А то я не особо понял.:)


no comment


Я так полагаю, если первый курс и судя по всему семестр первый, то на вход пойдет число в системе исчисления с основанием ниже 10 и соответственно само основание. Вы выход тогда число в десятичной системе исчисления.

Перевод производить суммирование произведений основания в степени равной разряду на число стоящие на этом разряде по разрядам.

Вот пример:
Пусть X=371 в восьмеричной системе.
требуется перевести X в 10 –ю систему счисления.
X = 3 * 8^2 + 7 * 8^1 +1* 8^0 = 249

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

Ну, а дальше или пиши сам, или выручайте товарищи владеющие паскалем.

41K
09 декабря 2008 года
Agentum
11 / / 09.12.2008
Ребят,ну помогите!Мне немного времени осталось...
41K
09 декабря 2008 года
Agentum
11 / / 09.12.2008
Число мне могут ввести в системе счисления с основанием от 2 до 35.у меня есть функция примерная.Но вот кто бы мне ее отредактировал бы...
function BaseConvert(NumIn: string; BaseIn: Byte;): string;
var
i: integer;
currentCharacter: char;
CharacterValue: Integer;
PlaceValue: Integer;
RunningTotal: Double;
Remainder: Double;
NumInCaps: string;
s: string;
begin
if ((NumIn = '') or (BaseIn < 2) or (BaseIn > 36)) then
begin
Result := 'Error';
Exit;
end;
NumInCaps := UpperCase(NumIn);
PlaceValue := Length(NumInCaps);
RunningTotal := 0;
for i := 1 to Length(NumInCaps) do
begin
PlaceValue := PlaceValue - 1;
CurrentCharacter := NumInCaps;
CharacterValue := 0;
if (Ord(CurrentCharacter) > 64) and (Ord (CurrentCharacter) < 91) then
CharacterValue := Ord(CurrentCharacter) - 55;
if CharacterValue = 0 then
if (Ord(CurrentCharacter) < 4 or (Ord (CurrentCharacter) > 57) then
begin
BaseConvert := 'Error';
Exit;
end
else
CharacterValue := Ord(CurrentCharacter);
if (CharacterValue < 0) or (CharacterValue > BaseIn - 1) then
begin
BaseConvert := 'Error';
Exit;
end;
RunningTotal := RunningTotal + CharacterValue * (Power (BaseIn, PlaceValue));
end;
while RunningTotal > 0 do
begin
Remainder := RunningTotal -(int(RunningTotal / 10) * 10);
RunningTotal := (RunningTotal - Remainder) / 10;
if Remainder >= 10 then
CurrentCharacter := Chr(Trunc(Remainder + 55))
else
begin
s := IntToStr(trunc(remainder));
CurrentCharacter := s[Length(s)];
end;
Result := CurrentCharacter + Result;
end;
end;
42K
10 декабря 2008 года
GeminiPro
14 / / 08.12.2008
Паскаль открывать лень буду писать тут если что поправишь

Код:
var
 st:string;  
n: longint;
  a:integer;
  s,i:integer;
er:integer;
begin
readln(st);
readln(n);{sist}
for i:=length(st) downto 1 do begin
     val(st,a,er);
     s:=s+a*round(exp( (length(st)-i)*ln(n)));
end;
writeln(s);

end.
41K
10 декабря 2008 года
Agentum
11 / / 09.12.2008
Я так понял это для перевода из систем счисления с основанием меньше 10?а с 11 по 35?
42K
10 декабря 2008 года
GeminiPro
14 / / 08.12.2008
Модифицируй чуть чуть, там где Val, вставь условие если в рамки где число(рамки по asciii коду смотри ord) возвращай число, а где буква заменяй на соответсвующее число(вычисть из ascii кода что то все два ифа вместо val
41K
10 декабря 2008 года
Agentum
11 / / 09.12.2008
Спасибо
366
11 декабря 2008 года
int
668 / / 30.03.2005
Agentum, ты понял, что он написал? o_O
41K
11 декабря 2008 года
Agentum
11 / / 09.12.2008
Нет.Просто мне на другом форуме написали функцию по переводу.:)
45K
11 декабря 2008 года
Xan
1 / / 11.12.2008
Цитата: Agentum
Нет.Просто мне на другом форуме написали функцию по переводу.:)



я проверял, вычисляет не то число..((

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог