Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2009, 19:20   #1
glupayastudentka
Пользователь
 
Регистрация: 17.06.2009
Сообщений: 17
По умолчанию Системы счисления

Заданы основание системы счисления p(p<14) и строка s, представляющая собой запись числа в этой системе счисления. Осуществить перевод заданного числа в систему с основанием 10.
glupayastudentka вне форума Ответить с цитированием
Старый 28.06.2009, 20:00   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
uses crt;
var 
p : byte;
s : string;

function getDecDigit(c : char) : byte;
begin
if c in ['0'..'9'] then
 getDecDigit := ord(c)-48
else getDecDigit := ord(UpCase(c))-55;
end;

function getDec(p : byte; s : string) : longint;
var
i : integer;
res,t : longint;
begin
res := 0;
t := 1;
for i:=length(s) downto 1 do
 begin
 res := res + getDecDigit(s[i])*t;
 t := t*p;
 end;
getDec := res;
end;

begin
clrscr;
write('Enter base: ');
readln(p);
writeln('Enter a number: ');
readln(s);
writeln(getDec(p,s));

readln 
end.
Теперь вопрос на засыпку: сами думать-то когда начнем?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.06.2009, 20:43   #3
glupayastudentka
Пользователь
 
Регистрация: 17.06.2009
Сообщений: 17
По умолчанию системы счисления

спасибо за помощь! все работает. а можно пояснить решение?.. я в паскале вобще ни бум-бум.. ну если только чуть-чуть.. а задачки здать нужно.. вот..
glupayastudentka вне форума Ответить с цитированием
Старый 28.06.2009, 21:13   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

А вы учитесь и будете тогда "бум-бум".

Поясняю функции:

Переводит одну цифру, записанную в p-ичной системе счисления в десятичную систему.
Код:
function getDecDigit(c : char) : byte;
begin
if c in ['0'..'9'] then   // если это цифра от 0 до 9
 getDecDigit := ord(c)-48  // то просто возвращаем эту цифру
else getDecDigit := ord(UpCase(c))-55;  // иначе, если это буква, то возвращаем ее код - 55
 // (код буквы 'A' = 65, то есть для этой буквы вернет 10
end;
А эта функция, собственно, переводит все число из p-ичной системы в десятичную.
Код:
function getDec(p : byte; s : string) : longint;
var
i : integer;
res,t : longint;  // результат пишем в res
begin
res := 0;   // изначально в результате ноль
t := 1;     // тут храним p в нужной степени. Изначально степень = 0
for i:=length(s) downto 1 do  // перебираем цифры справа налево
 begin
 res := res + getDecDigit(s[i])*t;  // прибавляем к результату <цифра>*p^<номер символа в строке>
 t := t*p;
 end;
getDec := res;
end;
На всякий случай напомню алгоритм перевода:
берем самую правую цифру и умножаем ее на основание системы (p) в степени, равной номеру этой цифры в числе (начиная с нуля), то есть, на единицу (p^0 = 1). Затем прибавляем к этому следующую цифру, умноженную
на p в степени 1. И так далее..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 28.06.2009 в 21:21.
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Системы счисления. glupayastudentka Помощь студентам 1 23.06.2009 22:00
Системы счисления бедный_студент Помощь студентам 8 18.02.2009 23:25
Задача на С++ [Системы счисления] Рустам Помощь студентам 9 29.11.2008 15:30
Системы счисления vdv08 Паскаль, Turbo Pascal, PascalABC.NET 1 08.05.2008 17:32