Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26

Помогите с функцией перевода из системы счисления N в 10?

21.07.2008, 14:00. Показов 3595. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
function ToDec(n:string; i, radix:longint):longint;
const
   digit: string[16]='0123456789ABCDEF';
begin
  if n[1]='0' then delete(n,1,1)
  else
  if i in [1..(length(n))] then
  begin
    m:=m*radix+pos(n[i],digit)-1;
    m := ToDec(n,i+1, radix)+m;
  end;
  ToDec:=m;
end;
По условию нельзя использовать операторы цикла.
Может ее как то по-другому записать? В таком виде то что возвращает функция очень сильно отличается от того что нужно. Я никак не пойму почему так?
I:=1 radix:=8
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.07.2008, 14:00
Ответы с готовыми решениями:

Калькулятор с функцией перевода чисел в разные системы счисления
Помогите составить правильно программу. Мне нужно сделать калькулятор который будет переводить числа из одной сис. счисл. в другую. Сам...

Помогите реализовать процедуры перевода из одно Системы Счисления (СС) в другую
Помогите реализовать процедуры перевода из одно Системы Счисления (СС) в другую: Вот задание: Реализуйте библиотеку функций для...

Простейший алгоритм перевода числа из 10 системы счисления в 16 ричную систему счисления
Помогите написать самый простой алгоритм перевода из 10 системы счисления в 16 ричную систему счисления! Мне нужен именно самый простенький...

13
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
21.07.2008, 14:06
напиши условие задания для начала, и что функция должна выводить!!!
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
21.07.2008, 14:13  [ТС]
Условие: Функция для перевода числа n из системы счисления (radix) в 10-ю.
По условию нельзя использовать операторы цикла.

Добавлено через 1 минуту
Цитата Сообщение от MAcK Посмотреть сообщение
напиши условие задания для начала, и что функция должна выводить!!!
Я то подумал что из темы понятно что нужно...
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
21.07.2008, 14:42
Сорри паскаля нет, перевод из строки в чилсо Val, наоборот Str
Используй рекурсию ... вот демо пример
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function MyProcedure(nn: string; rr: integer): integer; // что тут не поянтного???
var // а тут?
count: string;
s: string;
 
begin
s := copy(nn, 1, 8); //здесь сам решишь сколько нужно откусить -- сделаешь проверку
delete(nn, 1, 8); // не проходилли??
s// форматируешь в десятеричное число
count := IntToStr("Твоё число"); //тут используй str(MyInteger);
if Trim(nn) <> "" then // тут length(nn), но смотри чтобы не было пробелов в начале и в конце строки
count := count + MyProcedure(nn, rr); // вызываешь опять функию, 
return StrToInt(count); // тут ипользуешь val(Mystring)
end;
BEGIN //твоя главная программа
var
num, radix: integer;
 
begin
n = "Number";
num := MyProcedure(n, radix); // вызов функции, также как и в паскале, возвращает (должна) твоё десятичное число
END;
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
21.07.2008, 14:51  [ТС]
Как то не очень понятно... в институте такой ответ не пойдет нужен именно Pasсal..
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
21.07.2008, 14:59
Немного описал свой пример
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
21.07.2008, 15:22  [ТС]
Сейчас на работе, сегодня вечером попробую...
0
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
21.07.2008, 16:54
1)можно использовать не оператор цикла а goto
2)
при вызове из главной программы m,itog передавать как переменную=0.. оптимизировать влом
procedure perevod(var m:integer,var itog:integer,var a:string)
case a[m]{элемент номер m в строке}
"1" t=1;
"2" t=2;
.............
itog=itog*n(n-ричная система счисления)+t;
m+1;
if не конец строки perevod(m,itog,a);
end;

для не целочисленного аналогично..
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
21.07.2008, 17:11
Цитата Сообщение от Lurker Посмотреть сообщение
1)можно использовать не оператор цикла а goto
Вообще с головы вылетела функция ета :huh:
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
22.07.2008, 02:20
Это вроде обратная задача к этой, а там goto нельзя было..
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
22.07.2008, 08:41  [ТС]
Цитата Сообщение от Green Посмотреть сообщение
Это вроде обратная задача к этой, а там goto нельзя было..
это продолжение к той задаче... Goto тоже нельзя.
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
23.07.2008, 12:00  [ТС]
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
program Perevod_2;
var
  n: longint;
  Oct: string;
  Dec: longint;
const
   digit: string[16]='0123456789ABCDEF';
Function FromDec(n, radix:longint):string;
{перевод числа n из 10-й c/c в radix}
  var
    s: String;
  begin
    s:='';
    if n>0 then
          begin
            s:= digit[(n mod radix)+1]+s;
             n:= n div radix;
             s:= FromDec(n,radix)+s;
           end;
   FromDec:=s;
end;
function ToDec(n:string; radix:longint):longint; {перевод числа n из radix с/с в 10-ную}
  Var
    i ,m:longint;
    Pow, l: real;
  Const
    St: real =2;
  function ToDecIn(n:string; radix:longint):longint; {результат: число в 10-ной с/с умноженное на 2  length(n)+1 раз}
    begin
      if n[1]='0' then delete(n,1,1) { удаления 0 слева( если он есть)}
        else
          if i in [1..(length(n))] then {проверка условия i = длине стоки n}
                         begin
                            m:=m*radix+pos(n[i],digit)-1;
                            i:= i+1;
                            m := ToDecIn(n, radix)+m; {рекурсия функции}
                         end;
     ToDecIn:=m;
end;
  begin
    m :=0;
    i :=1;
    Pow :=Exp(Length(n)*Ln(St)); {Возведение в степень Length(n)^2 }
    ToDec:=round(ToDecIn(n,radix)/Pow); {Вычисление результата  ToDec}
    
  end;
begin
  Write ('Dec?: ');
  ReadLn (n);
  Oct:=FromDec (n, 8);
  Writeln ('OCT= ',Oct);
  Dec:= ToDec(Oct, 8);
  Writeln ('DEC= ',Dec);
  readln;
end.
У меня как то так получается...
Может кто знает как упростить или по другому составить функцию ToDec
Условие задачи:
Составить программу перевода числа из 10-ной С/С в систему счисления N. Использованние операторов цикла и GOTO запрещено

Добавлено через 13 минут

Еще и обратно нужно...
0
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
23.07.2008, 16:13
а то что я написал не работает?
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
24.07.2008, 06:23  [ТС]
Lurker Почему не работает? Отлично работает!! Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.07.2008, 06:23
Помогаю со студенческими работами здесь

Программа перевода из двоичной системы счисления в шестнадцатеричную систему счисления
1.Программа перевода из двоичной системы счисления в шестнадцатеричную систему счисления. 2.Лишние пробелы.Дана строка состоящая из...

Программа перевода из двоичной системы счисления в шестнадцатеричную систему счисления.
1.Программа перевода из двоичной системы счисления в шестнадцатеричную систему счисления.

Нужна программа для перевода из шестнадцатеричной системы счисления в восьмеричную систему счисления или десятичную
Исходный файл содержит числа в шестнадцатеричной системе счисления, отделенные друг от друга запятыми. Составить программу, которая для...

помогите с функцией перевода из 16 в 10 систему в С++
не знаю..не понимаю..там буквы abcdef прописывать нужно или нет

алгоритмы перевода системы счисления
• Используя алгоритмы перевода из одной системы счисления в другую, представить предложенные в вашем варианте( Вариант: 48,05(10) - (8),...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru