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

Конвертер чисел

05.07.2021, 23:23. Показов 2387. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задано натуральное число n. Необходимо перевести его в k-ичную систему счисления и найти разность между произведением и суммой его цифр в этой системе счисления.
Например, пусть n = 239, k = 8. Тогда представление числа n в восьмеричной системе счисления — 357, а ответ на задачу равен 3 × 5 × 7 − (3 + 5 + 7) = 90.
Входные данные
Входной файл INPUT содержит два натуральных числа: n и k (1 ≤ n ≤ 109, 2 ≤ k ≤ 10). Оба этих числа заданы в десятичной системе счисления.
Выходные данные
В выходной файл OUTPUT выведите ответ на задачу (в десятичной системе счисления).

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
PROGRAM BaseConverter(INPUT, OUTPUT);
CONST
  MinBase = 2;
  MaxBase = 10;
  MinNum = 1;
  MaxNum = 109;
  MaxLength = 7; {Зависит от степени двойки в которую входит MaxNum (109 > 2^6 => MaxLength = 7)}
VAR
  Base, Result, Num, Sum, Mult, Count: INTEGER;
  Ar: ARRAY [1 .. MaxLength] OF INTEGER;
BEGIN
  Count := 0;
  Result := 0;
  Base := 0;
  Num := 0;
  Sum := 0;
  Mult := 1;
  WRITELN('Введите число от ', MinNum, ' до ', MaxNum, ' включительно');
  READ(Num);
  IF NOT EOF
  THEN
    BEGIN
      IF (Num >= MinNum) AND (Num <= MaxNum)
      THEN
        BEGIN
          WRITELN('Введите основание системы счисления от ', MinBase, ' до ', MaxBase, ' включительно');
          READ(Base);
          IF (Base >= MinBase) AND (Base <= MaxBase)
          THEN
            BEGIN
              WHILE Num > 0 
              DO
                BEGIN
                  Count := Count + 1;
                  Ar[Count] := Num MOD Base;
                  Num := Num DIV Base;
                END;
                FOR Num := Count DOWNTO 1 
                DO
                  Result := Result * 10 + Ar[Num];   
              WHILE Result <> 0
              DO
                BEGIN  
                  Sum := Sum + Result MOD 10;
                  Mult := Mult * (Result MOD 10);
                  Result := Result DIV 10
                END;  
              WRITELN('Разность произведения и суммы равно: ', Mult - Sum)     
            END  
          ELSE
            WRITELN('Основание не пренадлежит промежутку [', MinBase, '; ', MaxBase, ']');            
        END         
      ELSE
        WRITELN('Число не пренадлежит промежутку [', MinNum,'; ', MaxNum,']')
    END;
END.
Объясните, пожалуйста, как работает вот эта часть кода
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
WHILE Num > 0 
DO
  BEGIN
    Count := Count + 1;
    Ar[Count] := Num MOD Base;
    Num := Num DIV Base;
  END;
  FOR Num := Count DOWNTO 1 
  DO
     Result := Result * 10 + Ar[Num];   
  WHILE Result <> 0
  DO
     BEGIN  
        Sum := Sum + Result MOD 10;
        Mult := Mult * (Result MOD 10);
        Result := Result DIV 10
     END;
И, есть ли варианты, как можно обойтись без массива?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.07.2021, 23:23
Ответы с готовыми решениями:

Конвертер валют
Не получается сделать так, чтобы вместо 104,87 € вывело 8389,6 руб. var p,l:integer; g:string; n:real; z:real; h:integer; ...

Написать программу <<Конвертер>>
«Перевод из 10-ичной системы счисления в 2-, 8-, 16-ичную»

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

5
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
06.07.2021, 04:22
Лучший ответ Сообщение было отмечено mr-Crocodile как решение

Решение

Вообще зачем весь этот огород, если для данных имеются ограничения и требуется получить только одно число…
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  n, k, o, p, s : Integer;
begin
  Read(n, k);
  p := 1; s := 0;
  repeat
    o := n mod k;
    n := n div k;
    p := p * o;
    s := s + o;
  until n = 0;
  Write(p - s);
end.
1
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
06.07.2021, 09:44
Цитата Сообщение от JuriiMW Посмотреть сообщение
n, k, o, p, s : Integer;
лучше указать тип LongInt, ведь Integer платформозависимый и в разных Паскалях может иметь разный диапазон, в который https://www.cyberforum.ru/cgi-bin/latex.cgi?{9}^{9} = 387420489 может и не влезть.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
06.07.2021, 09:46
mr-Crocodile, согласен!
Только я посмотрел, что у ТС integer…
1
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
06.07.2021, 10:05
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
в который 99= 387420489
109
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
06.07.2021, 11:36
Цитата Сообщение от Puporev Посмотреть сообщение
https://www.cyberforum.ru/cgi-bin/latex.cgi?{10}^{9}
произведение цифр в числе https://www.cyberforum.ru/cgi-bin/latex.cgi?{10}^{9} будет равно нулю, для него любого типа данных хватит

я имел в виду, что если взять число https://www.cyberforum.ru/cgi-bin/latex.cgi?{9}^{9} и найти произведение его цифр, то 9*9*9*9*9*9*9*9*9 даст нам как раз число 387420489, которое может не "поместиться" в Integer в системах, где под него отводится 2 байта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.07.2021, 11:36
Помогаю со студенческими работами здесь

Конвертер валют
Здравствуйте, задали написать простенькую прогу. 1. Написать программу для перевода рублей в доллары. 2. Стоимость покупки и курс валют...

Конвертер из html в txt
Здравствуйте, нужна помощь с курсовым проектом по программированию &quot;Конвертер из HTML в TXT&quot;. Необходимо реализовать конвертацию...

Конвертер из Pascal в HTML
Написал программу на паскале, можно ли ее как нибудь конвертировать в html?

Конвертер чисел
Задано действительное число up в системе счисления с основанием p, и основание q (p, q = 2, 8, 10, 16). Требуется: 1. Перевести число...

Нужно сделать конвертер чисел из 16 сс в 10
Помогите написать программу переводящую число из 16 сс в 10


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
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. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru