≡ Передовица » Макулатура » ИиО » СИСТЕМЫ СЧИСЛЕНИЯ
СИСТЕМЫ СЧИСЛЕНИЯ (N3/1994)
Простая программа для преобразования чисел между системами счисления. Демонстрирует операции над текстовыми строками.
Н. А. Костарева. Группа сайта просит вас связаться с нами! (ЗАЧЕМ ЭТО?) г. Москва.Предлагаемая простая программа на Бейсике демонстрирует почти все операции над символьными переменными, выполняя перевод чисел из одной системы счисления в другую. Эта программа была составлена вместе со школьниками при изучении темы <Символьная переменная> и применяется в качестве контролирующей при сдаче зачёта по теме <Системы счисления>. Системы счисления могут быть заданы от двоичной до двадцатеричной. Для представления чисел используются цифры от 0 до 9 и заглавные буквы латинского алфавита. Назначение строк программы: 20 - ввод исходного числа в N$; 30 - ввод основания входной системы счисления в SI; 40 - ввод основания выходной системы счисления в SO; 50 - обнуление переменных D и K$: D - число в десятичной системе счисления, K$ - результат; 60 - если заданная входная система счисления - десятичная (SI=10), то переход на строку 130; 70 - 120 - перевод числа из входной системы счисления (SI) в десятичную: Q - код одного символа числа, R - цифра числа; 130 - если выходная система счисления (SO) - десятичная, то вычисление K$ и переход на 180 строку; 140 - 170 - перевод числа из десятичной системы счисления в выходную (SO): R - остаток при делении, О - код буквы; 180 - вывод результата. Листинг: 10 REM PERSS20 20 INPUT "Введите число";N$ 30 INPUT "Введите вх. систему счисления-";S1 40 INPUT "Введите вых. систему счисления-";SO 50 IF SI = 10 THEN D = VAL ( N$ ) : GOTO 130 60 D = 0 : K$ = "" 70 FOR I = 1 TO LEN ( N$ ) 80 Q = ASC ( M1D$ ( N$,1,1 )) 90 IF Q > 64 THEN R = Q - 55 : GOTO 110 100 R = VAL ( M1D$ ( N$,1,1 )) 110 D = D + R * SI ^ ( LEN ( N$ ) - 1 ) 120 NEXT I 125 IF SO = 10 THEN K$ = STR$ ( D ) : GOTO 180 130 IF D = 0 THEN PRINT "ОШИБКА": GOTO 20 140 R = D - INT ( D / SO ) * SO + 0.5 150 IF INT ( R ) > 9 THEN Q = INT ( R ) + 55 : K$ = CHR$ ( Q ) + K$ : GOTO 170 160 K$ = STR$ ( INT ( R )) + K$ 170 IF D >= SO THEN D = INT ( D / SO ) : GOTO 140 180 PRINT "РЕЗУЛЬТАТ"; K$ 190 END Примечание. В программе используются операторы, имеющиеся в большинстве версий Бейсика, поэтому она может работать практически на любой ПЭВМ. * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |