0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 13
1

Написать рекурсивную процедуру, переводящую целое число из восьмеричной системы счисления в десятичную

19.11.2010, 23:53. Показов 2439. Ответов 1
Метки нет (Все метки)

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

Не могу сделать, спасибо 3арание.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2010, 23:53
Ответы с готовыми решениями:

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

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

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

Написать процедуру перевода из восьмеричной системы счисления в десятичную
Помогите пожалуйста, написать процедуру перевода из восьмеричной системы счисления в десятичную)

1
13082 / 5867 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
20.11.2010, 00:48 2
Лучший ответ Сообщение было отмечено Orgos как решение

Решение

Полное решение:
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
56
57
58
59
60
61
62
63
64
65
66
67
program Project1;
 
(*Рекурсивный перевод восьмеричной записи в число.*)
function Oct2Num(const aSOct : String; const aWeight, aI : Integer) : Integer;
var
  Num : Integer;
begin
  Num := 0;
  case aSOct[aI] of
    '0' : Num := 0 * aWeight;
    '1' : Num := 1 * aWeight;
    '2' : Num := 2 * aWeight;
    '3' : Num := 3 * aWeight;
    '4' : Num := 4 * aWeight;
    '5' : Num := 5 * aWeight;
    '6' : Num := 6 * aWeight;
    '7' : Num := 7 * aWeight;
  end;
  if aI > 1 then begin
    Num := Num + Oct2Num(aSOct, aWeight * 8, aI - 1);
  end;
  Oct2Num := Num;
end;
 
(*Рекурсивный перевод числа в десятиричную запись.*)
function Num2Dec(const aNum : Integer) : String;
var
  StrDec : String;
  Num : Integer;
begin
  case aNum mod 10 of
    0 : StrDec := '0';
    1 : StrDec := '1';
    2 : StrDec := '2';
    3 : StrDec := '3';
    4 : StrDec := '4';
    5 : StrDec := '5';
    6 : StrDec := '6';
    7 : StrDec := '7';
    8 : StrDec := '8';
    9 : StrDec := '9';
  end;
  Num := aNum div 10;
  if Num > 0 then StrDec := Num2Dec(Num) + StrDec;
  Num2Dec := StrDec;
end;
 
var
  SOct, SDec, S : String;
  Num : Integer;
Begin
  repeat
    Writeln('Задайте целое неотрицательное число в восьмеричной системе счисления:');
    Readln(SOct);
 
    (*Переводим восьмеричную запись в число.*)
    Num := Oct2Num(SOct, 1, Length(SOct));
    (*Переводим число в десятиричную запись.*)
    SDec := Num2Dec(Num);
 
    Writeln('Это же число в десятичной системе счисления:');
    Writeln(SDec);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
End.
Решение без перевода числа в десятичную запись. - Основано на том, что при распечатке через Writeln числа и так представляются в десятичной записи:
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
program Project1;
 
(*Рекурсивный перевод восьмеричной записи в число.*)
function Oct2Num(const aSOct : String; const aWeight, aI : Integer) : Integer;
var
  Num : Integer;
begin
  Num := 0;
  case aSOct[aI] of
    '0' : Num := 0 * aWeight;
    '1' : Num := 1 * aWeight;
    '2' : Num := 2 * aWeight;
    '3' : Num := 3 * aWeight;
    '4' : Num := 4 * aWeight;
    '5' : Num := 5 * aWeight;
    '6' : Num := 6 * aWeight;
    '7' : Num := 7 * aWeight;
  end;
  if aI > 1 then begin
    Num := Num + Oct2Num(aSOct, aWeight * 8, aI - 1);
  end;
  Oct2Num := Num;
end;
 
var
  SOct, S : String;
  Num : Integer;
Begin
  repeat
    Writeln('Задайте целое неотрицательное число в восьмеричной системе счисления:');
    Readln(SOct);
 
    (*Переводим восьмеричную запись в число.*)
    Num := Oct2Num(SOct, 1, Length(SOct));
 
    Writeln('Это же число в десятичной системе счисления:');
    Writeln(Num);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
End.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2010, 00:48
Помогаю со студенческими работами здесь

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

Рекурсия. Написать рекурсивную подпрограмму, переводящую X в десятичную систему счисления.
Дано: двоичное число X. Требуется: написать рекурсивную подпрограмму, переводящую X в десятичную...

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru