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

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

18.07.2008, 08:37. Показов 7286. Ответов 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
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru