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

Перевод из одной системы в другую

18.07.2008, 08:37. Показов 7278. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать программу перевода натуральных чисел из одной системы в другую без использованния циклов.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.07.2008, 08:37
Ответы с готовыми решениями:

Перевод из одной системы счисления в другую
Дали задание: написать программу для перевода из одной системы счисления в другую. Системы счисления задаются с клавиатуры. Т.е....

Перевод из одной системы счисления в другую
помогите пожалуйста(ошибка): Program perevod; Uses crt; Const Hex:string='ABCDEF'; Var Init,PartOS,Null,BInit,Way:string; ...

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

15
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
18.07.2008, 09:10
Помоги мне найти большой мешок денег и что бы мне ничего за это не было..

Используй рекурсию. Если где-то проблема, пиши код, пиши что не понятно, люди помогут.
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
18.07.2008, 09:37  [ТС]
Цитата Сообщение от Green Посмотреть сообщение
Помоги мне найти большой мешок денег и что бы мне ничего за это не было..

Используй рекурсию. Если где-то проблема, пиши код, пиши что не понятно, люди помогут.
Сам ищю такой мешок с деньгами. .
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
21.07.2008, 05:16  [ТС]
Delphi
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
program Perevod;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
  n :longint;
  function FromDec(n, radix:longint):string;
  var
    s: String;
  const
    digit: string[16]='0123456789ABCDEF';
  Label
    M1,M2;
  begin
    s:='';
    M1:
    if n=0 then Goto M2
  else
    s:= digit[(n mod radix)+1]+s;
    n:= n div radix;
    goto M1;
    M2:
    FromDec:=s;
    end;
begin
  Write ('Dec?: ');
  ReadLn (n);
  Write (FromDec (n, 8));
  readln;
end.
{Подскажите пожалуйста как можно переписать функцию FromDec чтобы она возвращала значение числа в системе счисления N?
Использование операторов For, While,Repeat и Goto запрещено условием задачи.
P.S Очень расчитываю на помощь.}
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
21.07.2008, 05:34
добавить в константу digit значений (это цифры системы счисления) и восьмерку менять на свою систему счисления. Используя цифры и алфавит можно получить максимум (10+28) систему счисления.
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
21.07.2008, 05:54  [ТС]
Цитата Сообщение от Green Посмотреть сообщение
добавить в константу digit значений (это цифры системы счисления) и восьмерку менять на свою систему счисления. Используя цифры и алфавит можно получить максимум (10+28) систему счисления.
Подскажи как избавится от Goto?

Добавлено через 15 минут
А как избавиться от goto. (по условию задачи запрещается использовать операторы For, While,Repeat и Goto)
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
21.07.2008, 06:02
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function FromDec(n, radix:longint):string;
var
s: String;
const
digit: string[16]='0123456789ABCDEF';
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;
Примерно так..
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
21.07.2008, 06:58  [ТС]
Цитата Сообщение от Green Посмотреть сообщение
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function FromDec(n, radix:longint):string;
var
s: String;
const
digit: string[16]='0123456789ABCDEF';
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;
Примерно так..
Спасибо и правда работает...

Добавлено через 40 минут
Green еще один глупый вопрос. Почему функция перестает работать если перед строкой
FromDec:=s;
вставить else?
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
21.07.2008, 07:03
Так что ли?
Code
1
2
3
4
5
if n>0 then 
    begin
    end
else
FromDec:=s;
Потому, что функция твоя должна всегда возвращать строку. А при таком условии, она возвращает только при n<=0.
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
21.07.2008, 07:13  [ТС]
Теперь ясно. Спасибо за помощь.
0
0 / 0 / 0
Регистрация: 18.09.2009
Сообщений: 11
22.09.2009, 00:00
[QUOTE=D.Karpov;43287]Спасибо и правда работает...

А у меня не работает ни на 5 ни на 7 паскале выдает ошибку: нету ; перед FromDec:=s; и все тут...???
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
22.09.2009, 08:16
А Вы точно всю программу написали, или только эту функцию?
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
22.09.2009, 17:05  [ТС]
Давно это было... Я сдал эту работу в таком виде:
Delphi
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
[FONT=monospace]program Z_1_2;
{$APPTYPE CONSOLE}
uses
  SysUtils, Crt32, RusString;
Const
 BaseBin = 2; // Основание двоичной системы
 Digit: String[10] = '0123456789';  // Строка символов
Var
 Bin: String;   // Число в двоичной системе счисления
 Dec: Integer;  // Число в десятичной системе счисления
 Symbol,L: Byte;//  Длина строки Bin и номер символа в строке
 count: Byte;   // Счетчик примеров
Label
 M1,M2; // Метки
begin
 // Из двоичной в десятичную
 ClrScr;
 count := 1;
 Repeat  //Цикл
 Write(Count, Rus('. Введите число в двоичной системе счисления: ')); ReadLn(Bin);
 Dec := 0;
 Symbol :=1;
 L := Length(Bin); // Определяем длину строки Bin
 M1: begin //Метка M1
      Dec:= Dec*BaseBin + Pos(Bin[Symbol],Digit)-1;
      (*POS (SUBST, ST)  - функция типа INTEGER; отыскивает в строке ST первое
      вхождение подстроки SUBST и возвращает номер позиции, с которой она начинается;
      если подстрока не найдена, возвращается ноль.*)
      Inc(Symbol);  //  Перемещаемся к следующему символу в строке
      If L>=Symbol then Goto M1; // Проверяем если мы не до шли до конца строки
     end;                        //  Возврщаемся к метке M1
 WriteLn(Rus('   В десятичной: '), Dec);
 // Из десятичной в двоичную
 Bin := ''; // Делаем строку Bin пустой
 M2: Begin // Метка M2
       Bin := Digit[(Dec mod BaseBin)+1]+Bin; // Прибавляем к строке Bin символ
                                             //  остатка от деления плюс один строки Digit
       Dec := Dec div BaseBin;  // Делим
       If Not (Dec=0) Then Goto M2; // Проверяем если Dec<>0 Возвращаемся к M2
     end;
 WriteLn(Rus('   В двоичной: '), Bin);
  Inc(Count);// Прибавляем 1 к Count
  Until (ReadKey=#27) or (Count>10);
   //Условие для выхода- Нажата клавиша ESC или более 10 тестовых примеров[/FONT]
[FONT=monospace]end.[/FONT]
0
0 / 0 / 0
Регистрация: 18.09.2009
Сообщений: 11
22.09.2009, 20:21
Цитата Сообщение от D.Karpov Посмотреть сообщение
Давно это было... Я сдал эту работу в таком виде:
Delphi
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
[FONT=monospace]program Z_1_2;
{$APPTYPE CONSOLE}
uses
  SysUtils, Crt32, RusString;
Const
 BaseBin = 2; // Основание двоичной системы
 Digit: String[10] = '0123456789';  // Строка символов
Var
 Bin: String;   // Число в двоичной системе счисления
 Dec: Integer;  // Число в десятичной системе счисления
 Symbol,L: Byte;//  Длина строки Bin и номер символа в строке
 count: Byte;   // Счетчик примеров
Label
 M1,M2; // Метки
begin
 // Из двоичной в десятичную
 ClrScr;
 count := 1;
 Repeat  //Цикл
 Write(Count, Rus('. Введите число в двоичной системе счисления: ')); ReadLn(Bin);
 Dec := 0;
 Symbol :=1;
 L := Length(Bin); // Определяем длину строки Bin
 M1: begin //Метка M1
      Dec:= Dec*BaseBin + Pos(Bin[Symbol],Digit)-1;
      (*POS (SUBST, ST)  - функция типа INTEGER; отыскивает в строке ST первое
      вхождение подстроки SUBST и возвращает номер позиции, с которой она начинается;
      если подстрока не найдена, возвращается ноль.*)
      Inc(Symbol);  //  Перемещаемся к следующему символу в строке
      If L>=Symbol then Goto M1; // Проверяем если мы не до шли до конца строки
     end;                        //  Возврщаемся к метке M1
 WriteLn(Rus('   В десятичной: '), Dec);
 // Из десятичной в двоичную
 Bin := ''; // Делаем строку Bin пустой
 M2: Begin // Метка M2
       Bin := Digit[(Dec mod BaseBin)+1]+Bin; // Прибавляем к строке Bin символ
                                             //  остатка от деления плюс один строки Digit
       Dec := Dec div BaseBin;  // Делим
       If Not (Dec=0) Then Goto M2; // Проверяем если Dec<>0 Возвращаемся к M2
     end;
 WriteLn(Rus('   В двоичной: '), Bin);
  Inc(Count);// Прибавляем 1 к Count
  Until (ReadKey=#27) or (Count>10);
   //Условие для выхода- Нажата клавиша ESC или более 10 тестовых примеров[/FONT]
[FONT=monospace]end.[/FONT]

А где взять ети тру-шки -->SysUtils, Crt32, RusString
и не идет//
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
23.09.2009, 19:27  [ТС]
Цитата Сообщение от SSFox Посмотреть сообщение
А где взять ети тру-шки -->SysUtils, Crt32, RusString
и не идет//
SysUtils - это стандартный модуль Delphi, он здесь не нужен, а остальные во вложении хотя и они не совсем нужны...
Вложения
Тип файла: rar Unit.rar (16.0 Кб, 12 просмотров)
0
1 / 1 / 0
Регистрация: 21.07.2008
Сообщений: 26
23.09.2009, 20:21  [ТС]
Вот тоже самое и без всяких дополнительных модулей.
Delphi
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
program Z_1_2;
{$APPTYPE CONSOLE}
Const
 BaseBin = 2; // Основание двоичной системы
 Digit: String[10] = '0123456789';  // Строка символов
Var
 Bin: String;   // Число в двоичной системе счисления
 Dec: Integer;  // Число в десятичной системе счисления
 Symbol,L: Byte;//  Длина строки Bin и номер символа в строке
 count: Byte;   // Счетчик примеров
 function Rus(mes: string):string;
// В ANSI русские буквы кодируются числами от 192 до 255,
// в ASCII - от 128 до 175 (А..Я а..п) и от 224 до 239 (р..я).
var
i: integer; // номер обрабатываемого символа
begin
  for i:=1 to length(mes) do //Цикл от 1 до конца строки
    case mes[i] of
      'А'..'п':   mes[i] := Chr(Ord(mes[i]) - 64);
      'р'..'я' :  mes[i] := Chr (Ord(mes [i] ) -16);
    end;
  Rus := mes;
end;
function chbin(S: string):boolean;
var
  i:integer;
  res:byte;
begin
  for i:=1 to Length(s) do
  begin
    res := Pos(S[I],Digit)-1;
    result := (res=0) or (res=1);
    if not result then exit;
  end;
end;
begin
 // Из двоичной в десятичную
 count := 1;
 Repeat  //Цикл
 Write(Count, Rus('. Введите число в двоичной системе счисления: ')); ReadLn(Bin);
 if not chbin(bin) then //Проверка введенного числа
 begin
  Write(Rus('Введенное число не в двоичной системе счисления.'));
  readln;
  exit;
 end;
 Dec := 0;
 Symbol :=1;
 L := Length(Bin); // Определяем длину строки Bin
  repeat
      Dec:= Dec*BaseBin + Pos(Bin[Symbol],Digit)-1;
      Inc(Symbol);  //  Перемещаемся к следующему символу в строке
  until  not (L>=Symbol); // Проверяем если мы не до шли до конца строки
  WriteLn(Rus('   В десятичной: '), Dec);
 // Из десятичной в двоичную
 Bin := ''; // Делаем строку Bin пустой
 repeat
       Bin := Digit[(Dec mod BaseBin)+1]+Bin; // Прибавляем к строке Bin символ
       Dec := Dec div BaseBin;  // Делим
 until dec=0;
 WriteLn(Rus('   В двоичной: '), Bin);
  Inc(Count);// Прибавляем 1 к Count
  Until (Count>10);
   //Условие для выхода- более 10 тестовых примеров
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2009, 20:21
Помогаю со студенческими работами здесь

ПЕРЕВОД дробных чисел из одной системы счисления в другую. СПОСОБЫ ВНУТРЕННЕГО представления чисел с фиксированной точк
2) Создать блок-схему алгоритма программы перевода правильных дробей из одной системы счисления в другую по заданному варианту. 3)...

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

Перевод числа из одной СС в другую
Приветствую! Помогите в решении нижеприведённого задания! Написать и отладить программу по переводу числа из двоичной позиционной...

Перевод числа из одной меры весов в другую
Здравствуйте! Помогите пожалуйста, нужно срочно создать приложение в lazarus, для перевода числа из одной меры весов в другую Форма...

Перевод любого числа из 10 системы в любую другую
Ребят, помогите, пожалуйста. От этого зависит оценка на экзамене!! Требуется написать программу на Паскале, которая осуществляет перевод...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru