Передовица » Макулатура » ИиО » СИСТЕМЫ СЧИСЛЕНИЯ

СИСТЕМЫ СЧИСЛЕНИЯ (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

Примечание. В программе используются операторы, имеющиеся в большинстве версий Бейсика, поэтому она может работать практически на любой ПЭВМ.

* * *

Использование материалов проекта agatcomp без получения предварительного письменного разрешения agatcomp запрещено.


Почта для обратной связи: mail@agatcomp.ru


Живое общение по теме Агата: Telegram группа Agatcomp.


Накопленные знания и проекты: тематический ФОРУМ.


© 2004-2024 agatcomp.su / agatcomp.ru

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *