Android-приложение для поиска дешевых авиабилетов: play.google.com
Главная -> Справочник по алгоритмам

0 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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

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

Иногда причиной грубых расхождений результатов вычислений при правильном переводе программ являются особенности округления чисел при исполнении операторов циклов вида FOR а = р ТО у STEP б. Малые погрешности в вычислении у, например, когда Y есть целое число в целой степени, *!огут приводить к тому, что число циклов окажется на 1 меньше или больше, чем предполагаемое. Например, число циклов, заданных оператором FOR 1 = 1 ТО N13, при Л/= 2 может быть не 8, а 7 или 9 в зави-

симости от того, как округляется N". У некоторых ПЭВМ округление при возведении в целую степень целых чисел специально предусмотрено. Однако у других, в частности у Электроники-ДЗ-28, этого нет (хотя при вычислении Л/ с помощью оператора PRINT N 13 будет получен точный результат - ошибка содержится в скрытых разрядах). В подобных ситуациях округление можно проводить с помощью оператора INT. Например, выполнение точно циклов гарантировано, если оператор цикла записать в виде FOR 1= 1 ТО INT (N 13+1). Небольшая добавка 0,1 к Л/ создает определенность в операции округления. Подобные ситуации возможны и при использовании операторов косвенной адресации вида ON а, GOTO а, GOSUB а, когда а задает номер строки, т. е. целое число.



г л А в А 3

АЛГОРИТМЫ ВЫЧИСЛЕНИЙ

И ПРОГРАММЫ ЭЛЕМЕНТАРНЫХ

§ 3.1. Операции

с действительными числами

Перевод чисел из одной системы счисления в другую выполняется по правилам, описанным в [36]. Для перевода целого числа Хд, с основанием М в число Ад, с основанием N число Xj делится на N (/ = 1, 2, 3,...), а последовательность остатков от деления умножает.ся на М (/ = 0,1,2,...) и складывается. Числа Х/ в виде правильных дробей последовательно умножаются ца N (г = = 1,2,3,...), целые части результата делятся на М (/=1,2,3,...). В приведенных ниже программах операции иад целыми и дробными частями Х/ проводятся одновременно. Количество цифр Хм Ц должно превышать разрядности ЭВМ.

Программа 3.1.

Пример. Для Л/ = 23345, М = 9135 получим (Л/, М) = 1015, а для Л/=238 и М = 347 (Л/, М)=34.

Разложение целого чиса М на простые множители производится последовательным делением УИ на 2 и ряд простых чисел d (d = 3, 5, 7, 9, 11, 13, ...) по формуле

M-=M,-,/rf

до тех пор, пока соблюдается условие Программа 3.3.

Пример. Число 1234567890 раскладывается на множители 2ХЗХЗХ5Х3607Х Х3803.

Преобразование десятичного числа X в цепную, или непрерывную, дробь производится выделением целой части X, а затем

16 PRINTПРЕОБРйЗОВАНИЕ ЧИСЛА ХМ В ЧИСЛО XN

20 INPUTВВЕДИТЕ ХМ=Х!INPUTВВЕДИТЕ М=Й

25 1НриТВВЕДИТЕ N=N:LETU=0

30 LErS=10!LETK=10!LETM=6!6OSUB 50

35 LETS=L!LETK=NELETX=U:LETM=10

40 6CSUB 50;PRINT!8.4!XN=U!6OTO 20

50 LETL=4:;! LETIi=l: LETE=1: LETU=0

60 LETC=INTCX>!LETbJ=X-C

70 FOR I=S TO 0 STEP -1

80 LETB=U*L!EETA=INT<B>

90 LETD=Iiii!M:LETU=A/Ii+U

100 LETT=C:LETbJ=B-AslF Ы=0 THEN 120

110 tEXT I

120 LETA=INTCT/L>

130 ЬЕТи=<:Т-Ажи>жЕ+и:1ЕТЕ=ЕжМ

140 LETT=A!IF A<>0 THEN 120

150 RETURN; END

Контрольные примеры. Xf,= =27-*X5=43 (M = 8, Л/ = 5), X5 = 43-> ->X8 = 27 (M = 5, Л/ = 8), Xin= 100-X2 = = 1100100 (M=10, Л/ = 2), время счета /с»5 с.

Нахождение наибольшего общего делителя двух чисел N к М проводится с помощью рекуррентного соотношения

Afb = A/* 2-Int(A/* 2/W* ,) fe = 2,.3,...,

где A/„ = max(A/, \М\), W, = min(Л/, \М\). Если Nk станет нулевым, то наибольший обший делитель C(N, M) = Nk~\. Числа

целых частей Х,= 1/(Х, i -int Х,-,), где int,Ki.i - целая часть

Программа 3.4.

Пример. Число Х = л = 3,14159264-»-[3, 7, 15, 1, 2.S2, 1, 1, 1, 4]. т. е.

n = 3-f

15-f

N. к М должны быть с разрядностью 10. Программа 3.2.

меньше 10 для ЭВМ

Преобразование тичное число X

цепной производится

252+... дроби в деся-

непосред-



Программа 3.3.

05 PR I NTPA.3 ЛОЩЕНИЕ ЧИСЛА К HA ПРОСТЫЕ ИНОМИТЕЛИ

10 INPUTВВЕДИТЕ Х=Й

15 PRINT!Э.в!МНОЖИТЕЛИ X!GOTO 4в

20 PRINT 2!LETA=A/2

30 IF Й-1=0 THEN 50

40 IF A/2-INT<A.2>=0 THEN 20

50 LETB=3

60 LETC=SGR<A)+1

70 IF B>=C THEN 140

80 IF ft/B-IHTvA/B)=0 THEN 100

Эе LETB=B+2!G0T0 70

100 IF Й/ВжВ-А=0 THEN 126

110 GOTO Э0

120 PRINT В

130 LETA=A.B!GOTO 60

140 PRINT Й!PRINTКОНЕЦ:GOTO 10!ЕНГ1

Программа 3.4.

05 PRINTntEOEPASOBAHHE ДЕСЯТИЧНОГО ЧИСЛА В ЦЕПНУ» ДРОБЬ

10INPUTВВЕДИТЕ ДЕСЯТИЧНОЕ ЧИСЛО Х=Х

15 FCIR 1=1 ТО 10

20 LETF=IHT<:X>!PRINT!9.0!F

30 LETX=l-vX-F>!NEXT I

40 GOTO 10:END

Программа 3.5.

0Fi FPINTOPEOEPASOBAHHE ЦЕПНОЙ ДРОБИ В ДЕСЯТИЧНОЕ ЧИСЛО

10 INPUT C!LETD=1:LETA=0!LETF=C:LETB=1

20 PRINT FB!INPUT E!LETG=C

30 LETC=C*E+D!LETD=G!LETG=B

4Й LETB=E*E+A3 LETA=C!! LETF=C

50 GOTO 20!END

Программа 3.6.

10 PRINTДЕЛЕНИЕ ЧИСЛА A HA ЧИСЛО Б 20 PRINTС ПРОИЗВОЛЬНОЙ ТОЧНОСТЬ» 30 INPUTВВЕДИТЕ Й/В Й/В

40 LET 1=1НТ<Й/В>!PRINT!9.0«ЦЕЛАЯ ЧйСТЬ РЕЗУЛЬТАТА 50 PRINTПОСЛЕДОВАТЕЛЬНОСТЬ ЦИФР РЕЗУЛЬТАТА 6й LETF=INT<AB>!FRINT!1.0! F; 70 LETA=<:A-F*B>*ie!GOTO eOsEHD

10 PRIИТНАХОЖДЕНИЕ НАИБОЛЬШЕГО ОБЩЕГО ДЕЛИТЕЛЯ

15 INPUTВВЕДИТЕ ПЕРВОЕ ЧИСЛО N=N

20 INPUTВВЕДИТЕ ВТОРОЕ ЧИСЛО М=М

30 LETI=INT<N/M>!LETL=M

40 LETM=N-M*l!LETH=L

50 IF М<>0 THEN 30

60 PRINT 19.0«НАИБОЛЬШИЙ ОБЩИЙ ДЕЛИТЕЛЬ=Н 70 GOTO 15!END



0 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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78



0.011
Яндекс.Метрика