0

C клавиатуры вводится число. Вывести все системы счисления, в которых данное число не существует.

Как такое решать?

Kromster
  • 13,809
  • 1
    Вы какие системы счисления знаете? – Stanislav Volodarskiy Oct 07 '22 at 21:11
  • 2,3,8,10. Также 16. Слышал про 20 и 60 системы. Но надо в задание до 10 включительно системы (2,3,8,10). @StanislavVolodarskiy –  Oct 07 '22 at 21:16
  • 3
    Придумайте какое-нибудь десятичное число, но чтобы он не было двоичным. Подумайте над общим принципом. – Stanislav Volodarskiy Oct 07 '22 at 22:00
  • @StanislavVolodarskiy стоит тогда поставить на проверку к какой системе относится да? –  Oct 08 '22 at 07:48
  • Почему 123 не годится в качестве двоичного числа? Хотя может быть десятичным. – Stanislav Volodarskiy Oct 08 '22 at 07:50
  • 123 не подходит к двоичной так как есть числа 2 и 3 @StanislavVolodarskiy –  Oct 08 '22 at 07:53
  • Тогда ваша задача глядя на цифры числа решить какие системы счисления не подходят. – Stanislav Volodarskiy Oct 08 '22 at 07:57
  • а то есть тут надо проверять по цифрам. Если вот 123 , то системы которые не входят это 2 и 3 системы счисления. Так? @StanislavVolodarskiy –  Oct 08 '22 at 07:59
  • Приблизительно так. – Stanislav Volodarskiy Oct 08 '22 at 13:16
  • все очень просто цифры, буквы должны быть меньше системы счисления иначе не подходит допустим для 16 ричной не подхотит 5G хотя для интернета годится)), пример на десятеричной 9 < 10, пример для двоичной 1 < 2 – Daniil Loban Oct 11 '22 at 14:39

2 Answers2

0

tio.run

using System.Linq;

Console.WriteLine(String.Join(", ", Enumerable.Range(1, Console.ReadLine().ToUpper().Max(ch => "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".IndexOf(ch))).Skip(1)));

783
2, 3, 4, 5, 6, 7, 8

Надо именно чтобы было число в типе данных integer.

Console.WriteLine
(
  x == 0
    ? "Запись нуля в единичной системе счисления в виде пустой строки сомнительна")
    : "Число {0} можно представить в любой системе счисления с положительным основанием",
  x
);
Qwertiy
  • 123,725
  • прошу прощения, но это не так. Надо именно чтобы было число в типе данных integer. И работать с string нельзя @Qwertiy –  Oct 08 '22 at 07:47
  • 2
    @KaneJons, Логика проста: находите максимальную цифру в этом числе и ответом будут все системы счисления, с основанием от 2 до этой цифры включительно. – Alekcvp Oct 08 '22 at 09:12
  • @KaneJons, во-первых, ты в вопросе написал: "C клавиатуры вводится число". Во-вторых, integer существует независимо от систем счисления, а значит нет такой системы, в которой он не представим (за исключением экзотических типа основания 0). – Qwertiy Oct 08 '22 at 14:20
  • @Alekcvp, и почему же? – Qwertiy Oct 08 '22 at 14:27
  • @Qwertiy Потому что, если говорить о позиционных системах счисления, основание системы счисления равно количество цифр в ней. Соответственно, в восьмеричной - это 8, максимальная 7. В двоичной - это 2, максимальная 1. И т.п. Т.к. автор вопроса указал что речь идёт об Integer, то основания выше 10 быть не может, иначе для записи потребуются буквы, а их в Integer не запишешь. – Alekcvp Oct 09 '22 at 15:26
  • @Alekcvp, в integer и цифры не запишешь - там только биты. – Qwertiy Oct 09 '22 at 16:03
  • @Qwertiy, В Integer записывается целое число. По странному стечению обстоятельств, любое число в системе с основанием меньше 10 можно записать туда как десятичное и анализировать его. Например: (8)367 - можно ввести как десятичное 367 и анализировать каждый разряд. (2)110011 можно ввести как десятичное 110011 и так же анализировать каждый разряд. И т.п. Как именно там хранятся эти числа - значения не имеет. – Alekcvp Oct 10 '22 at 10:11
  • 1
    @Alekcvp, а какое отношение десятичная система имеет к integer? – Qwertiy Oct 10 '22 at 23:23
  • 1
    @Alekcvp система счисления - представление числа, а не само число. Не пишите ерунду. – aepot Oct 11 '22 at 05:58
  • @aepot, а вы условия задачи читали? Для её решения Integer достаточно. – Alekcvp Oct 11 '22 at 14:18
  • @Qwertiy, написал как это делается через Integer, см. ответ. – Alekcvp Oct 11 '22 at 14:36
  • @Alekcvp читал, оно не имеет никакого смысла. Систем счисления бесконечное множество. – aepot Oct 11 '22 at 14:47
  • @Alekcvp, это нелогично. – Qwertiy Oct 11 '22 at 16:51
  • @aepot, условие задачи ограничивает выборку только 9ю первыми, если там действительно запрещено использовать строки для решения. В противном случае задача вообще не имеет решения. – Alekcvp Oct 12 '22 at 17:08
0

Как-то так в итоге получается:

var 
  number: integer;
  digit, max, i: integer;

begin max := 1; write('Введите число: '); readln(number); number := abs(number); while number <> 0 do begin digit := number mod 10; if digit > max then max := digit; number := number div 10; end; writeln('Недопустимые системы счисления:'); if max < 2 then writeln('Отсутствуют.'); for i := 2 to max do write(i, ' '); end.

Alekcvp
  • 1,392