![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 14.05.2009
Сообщений: 5
|
![]()
помогите решить такую задачу:
для заданного натурально числа K найти наименьшее основание Р системы счисления, в которой представление числа К не содержит нулей. напечатать это представление. сам алгоритм перевода из десятичной в другую систему такой program N; uses crt; const n=12; var n10,n2,i,j=word; a:array[1..n] of word; begin writeln ('введите число'); readln(n10); writeln ('в какую систему'); readln (n2); i:=1; x:=n10 while (x div n2)>0 do begin a[i]:=x mod n2; x:=div n2; i:=i+1; end; a[i]:=x mod n2; for j:=i downto 1 do writeln (a[i]) end. не хватает соображалки на решение(((( |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
дык главное у Вас уже есть, в цикле наращиваете основание системы счисления. Переводите заданное число. если в записи есть нули, то повторяете цикл.
да. насколько мне известно, практически допустима система счисления с основанием 26 (больше уже не хватит буковок для кодирования символов)... Так что, если до 26 дошли - можно выдавать текст о невозможности представления данного числа без ноликов.. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 14.05.2009
Сообщений: 5
|
![]()
вот в этом и проблема. не могу понять как в цикле записать подходящее условие. получается что надо работать с счетчиком послеусловия а как дальше не знаю.
![]() |
![]() |
![]() |
![]() |
#4 |
Регистрация: 14.05.2009
Сообщений: 5
|
![]()
прошу проверить мою программу. больше нет сил думать. если правильная, может кому то может.
program tk; uses crt; const n=12; var x,s:word; i,j:word; n2,n10:word; a:array[1..n] of word; begin s:=1; clrscr; write('vvedite chislo'); readln(n10); n2:=1; repeat n2:=n2+1; s:=1; i:=1; x:=n10; while (x div n2)>0 do begin a[i]:=x mod n2; x:=x div n2; s:=s*a[i]; i:=i+1; end until s<>0; a[i]:=x mod n2; for j:=i downto 1 do write(a[j]); writeln ('v sisteme=',n2) end. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
oleg52, всё правильно сделано.
Два замечания: 1) код лучше форматировать и помещать в теги [СODE][/СODE] - выделить текст и нажать значок "#" 2) всё таки, при основании больше>10 выведенная строка неверна! Вместо циферок 10 (11, 12.. и т.д.) надо выводить буковки... поясню: возьмите число 30240 програма выдаёт для него результат: 621014 v sisteme = 17 а теперь выделите, какие циферки получились ( x0*1 + x1*17 + x2*17^2 подскажу,если вывести через пробел, то получим: 6 2 10 14 согласитесь, что так понятнее. а если взять такой код: Код:
такой результат: 62AE v sisteme = 17 согласитесь, что это более правильно?.. но в целом, молодец. Зачёт! ![]() |
![]() |
![]() |
![]() |
#6 |
Регистрация: 14.05.2009
Сообщений: 5
|
![]()
за перевод чисел в буквенную систему отдельное спасибо. препод может докопаться, надо ему уменьшать шансы
![]() ![]() ![]() Последний раз редактировалось oleg52; 15.05.2009 в 15:27. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кто-нибудь знаком с системами технического зрения? | Mikhail Bakurov | Свободное общение | 0 | 20.01.2009 23:17 |
перевод системы исчисления (16 ->10) | adwaer | Помощь студентам | 5 | 15.06.2008 20:29 |
16-я система исчисления:вопрос | Mustang | Общие вопросы Delphi | 4 | 23.09.2007 17:57 |