Инструменты пользователя

Инструменты сайта


msx:basic_dialogue_programming_language:004

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:basic_dialogue_programming_language:004 [2022-09-17 16:51]
GreyWolf [IV.2.6. Примеры]
msx:basic_dialogue_programming_language:004 [2023-02-19 16:09] (текущий)
GreyWolf
Строка 6: Строка 6:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Любая по-настоящему полезная классификация Любая по-настоящему полезная классификация
 содержит от трёх до шести категорий. содержит от трёх до шести категорий.
Строка 978: Строка 978:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Пока слепо плыл сон по разбитым надеждам,​\\ ​ Пока слепо плыл сон по разбитым надеждам,​\\ ​
 Космос с болью сочился над разбитой любовью,​\\ ​ Космос с болью сочился над разбитой любовью,​\\ ​
Строка 1253: Строка 1253:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Я разуму уму заря,\\ Я разуму уму заря,\\
 Я иду с мечом судия. Я иду с мечом судия.
Строка 1263: Строка 1263:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Мечтатель! Летать чем? Мечтатель! Летать чем?
 <WRAP rightalign>​ <WRAP rightalign>​
Строка 1734: Строка 1734:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Елечвок енмяет ослог. Елечвок енмяет ослог.
 <WRAP rightalign>​ <WRAP rightalign>​
Строка 1941: Строка 1941:
 10 DEFINT I,​J,​M:​DEFSTR A:INPUT M 10 DEFINT I,​J,​M:​DEFSTR A:INPUT M
 30 FOR I=1 TO M:​A=STR$(I):​FOR J=2 TO LEN(A) 30 FOR I=1 TO M:​A=STR$(I):​FOR J=2 TO LEN(A)
-55 IF VAL(MID$(A,​J,​1))=0 THEN NEXT J:NEXT I:END ELSE::::IF I MOD VAL(MID$(A,​J,​1))=0 THEN NEXTJ:​PRINTI;:​NEXTI ELSE NEXTI+55 IF VAL(MID$(A,​J,​1))=0 THEN NEXT J:NEXT I:END ELSE:::: 
 +   IF I MOD VAL(MID$(A,​J,​1))=0 THEN NEXTJ:​PRINTI;:​NEXTI ELSE NEXTI
 run run
 ? 40 ? 40
Строка 1991: Строка 1992:
 27 'В строках 30-60 идентификация исходного массива C$(N). 27 'В строках 30-60 идентификация исходного массива C$(N).
 30 DIM C$(N):FOR I=1 TO N:​INPUTC$(I):​NEXT:​K$=""​ 30 DIM C$(N):FOR I=1 TO N:​INPUTC$(I):​NEXT:​K$=""​
-75 'В строках 80-130 находятся "​общие"​ символы. Значение переменной К$ состоит из "​общих"​ символов.+75 'В строках 80-130 находятся "​общие"​ символы. ​ 
 +    ​Значение переменной К$ состоит из "​общих"​ символов.
 80 FOR I=1 TO N:FOR J=1 TO LEN(C$(I)):​FOR R=1 TO N 80 FOR I=1 TO N:FOR J=1 TO LEN(C$(I)):​FOR R=1 TO N
 110 FOR K=1 TO LEN(C$(R)) 110 FOR K=1 TO LEN(C$(R))
Строка 2000: Строка 2002:
 170 IF MID$(C$(I),​J,​1)=MID$(K$,​K,​1)THENMID$(C$(I),​J,​1)="​ " 170 IF MID$(C$(I),​J,​1)=MID$(K$,​K,​1)THENMID$(C$(I),​J,​1)="​ "
 180 NEXT K,J,I 180 NEXT K,J,I
-185 '​Строки 190-230 выполняют "​сжатие"​ слов массива C$(N),​т.к.при "​вычеркивании"​ "​общих"​ символов образуются пробелы.+185 '​Строки 190-230 выполняют "​сжатие"​ слов массива C$(N),​т.к. 
 +     при "​вычеркивании"​ "​общих"​ символов образуются пробелы.
 190 DIM N$(N) 190 DIM N$(N)
 200 FOR I=1 TO N:FOR J=1 TO LEN(C$(I)) 200 FOR I=1 TO N:FOR J=1 TO LEN(C$(I))
Строка 2247: Строка 2250:
 \\ {{.examples:​043-06.bas|}} \\ [[+tab|wmsxbpge>​043-06.bas]] \\ {{.examples:​043-06.bas|}} \\ [[+tab|wmsxbpge>​043-06.bas]]
 <​code>​ <​code>​
-10 '​Функция FN ODD$(N) помогает проверить,​является ли целое число N нечетным:​если значением функции является -1, то число N — нечетное,​ если же значением функции является 0, то число N — четное.+10 '​Функция FN ODD$(N) помогает проверить,​является ли целое число N нечетным:​ 
 +    ​если значением функции является -1, то число N — нечетное, ​ 
 +    ​если же значением функции является 0, то число N — четное.
 20 DEF FN ODD(N)=RIGHT$(BIN$(N),​1)="​1"​ 20 DEF FN ODD(N)=RIGHT$(BIN$(N),​1)="​1"​
 </​code>​ </​code>​
Строка 2573: Строка 2578:
 5' где x - корни линейного алгебраического уравнения n-ой степени 5' где x - корни линейного алгебраического уравнения n-ой степени
 6' ​     i        ​ 6' ​     i        ​
-7'​Алгоритм решения поставленной задачи основан на формулах Ньютона,​ приведенных в книге: А.П.Мишина,​ И.В.Проскуряков "​Высшая алгебра"​. М.:​ГИФМЛ,​ 1962, гл.III, 3, с.245.+7'​Алгоритм решения поставленной задачи основан на формулах Ньютона, ​ 
 +  ​приведенных в книге: А.П.Мишина,​ И.В.Проскуряков "​Высшая алгебра"​. ​ 
 +  ​М.:​ГИФМЛ,​ 1962, гл.III, 3, с.245.
 11 INPUT "​Укажите степень многочлена";​N:​INPUT"​Укажите k";K 11 INPUT "​Укажите степень многочлена";​N:​INPUT"​Укажите k";K
 15 DIM A(N) '​Описан массив коэффициентов уравнения! 15 DIM A(N) '​Описан массив коэффициентов уравнения!
Строка 2639: Строка 2646:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Ибо это недостойно совершенства человеческого,​ Ибо это недостойно совершенства человеческого,​
 подобно рабам тратить часы на вычисления. подобно рабам тратить часы на вычисления.
Строка 2736: Строка 2743:
 NEW NEW
 Ok Ok
-10 DATA " ","​.","​А","​Б","​В","​Г","​Д","​Е","​Ж","​З","​И","​Й","​К","​Л","​М","​Н","​О","​П","​Р","​С","​Т","​У","​Ф","​Х","​Ц","​Ч","​Ш","​Щ","​Ы","​Ь","​Э","​Ю","​Я"​ +10 DATA " ","​.","​А","​Б","​В","​Г","​Д","​Е","​Ж","​З","​И","​Й","​К","​Л","​М","​Н",​ 
-15 DATA " ","​.","​-","​а","​б","​в","​г","​д","​е","​ж","​з","​и","​й","​к","​л","​м","​н","​о","​п","​р","​с","​т","​у","​ф","​х","​ц","​ч","​ш","​щ","​ы","​ь","​э","​ю","​я"​+        ​"​О","​П","​Р","​С","​Т","​У","​Ф","​Х","​Ц","​Ч","​Ш","​Щ","​Ы","​Ь","​Э","​Ю","​Я"​ 
 +15 DATA " ","​.","​-","​а","​б","​в","​г","​д","​е","​ж","​з","​и","​й","​к","​л","​м","​н",​ 
 +        ​"​о","​п","​р","​с","​т","​у","​ф","​х","​ц","​ч","​ш","​щ","​ы","​ь","​э","​ю","​я"​
 20 INPUT"​Введите количество фамилий";​S:​DIM C$(S) 20 INPUT"​Введите количество фамилий";​S:​DIM C$(S)
 30 FOR I=1TOS:​INPUT"​Введите очередную фамилию";​C$(I):​NEXTI 30 FOR I=1TOS:​INPUT"​Введите очередную фамилию";​C$(I):​NEXTI
Строка 2757: Строка 2766:
 110 FOR K=1 TO L1 110 FOR K=1 TO L1
 120 FOR I=1 TO S-1:​FORJ=I+1 TO S 120 FOR I=1 TO S-1:​FORJ=I+1 TO S
-130 IF MID$(C$(I),​1,​K)=MID$(C$(J),​1,​K) THEN GOTO 140 ELSE IF(N(K,​I)>​N(K,​J))AND(MID$(C$(I),​1,​K-1)=MID$(C$(J),​1,​K-1)) THEN SWAP C$(I),​C$(J):​FOR L=1 TO L1:SWAP N(L,​I),​N(L,​J):​NEXT L+130 IF MID$(C$(I),​1,​K)=MID$(C$(J),​1,​K) THEN GOTO 140 ELSE  
 +    ​IF(N(K,​I)>​N(K,​J))AND(MID$(C$(I),​1,​K-1)=MID$(C$(J),​1,​K-1)) THEN  
 +    ​SWAP C$(I),​C$(J):​FOR L=1 TO L1:SWAP N(L,​I),​N(L,​J):​NEXT L
 140 NEXT J,I,K 140 NEXT J,I,K
 150 CLS '​Очистим экран дисплея! 150 CLS '​Очистим экран дисплея!
Строка 2784: Строка 2795:
 Ok Ok
 1 CLS '​Вначале очистим экран! 1 CLS '​Вначале очистим экран!
-2 INPUT"​Введите два натуральных числа через запятую,​ причём второе число должно быть больше первого (эти числа задают диапазон,​ в котором ищутся абсолютно простые числа)";​C,​E +2 INPUT "​Введите два натуральных числа через запятую,​ причём второе число ​ 
-3 PRINT"​Вы хотите узнать всю правду об абсолютно простых числах,​ лежащих на отрезке [";​C;",";​E;"​] ? Пожалуйста..."​ +        ​должно быть больше первого (эти числа задают диапазон, ​ 
-4 FOR A=C TO E:IF A<​10AND(A=1ORA=2ORA=3ORA=5ORA=7)THEN PRINTA;:​NEXTA ELSE IF A<​10AND(A=4ORA=6ORA=8ORA=9)THEN NEXTA ELSE A$=MID$(STR$(A),​2)+        ​в котором ищутся абсолютно простые числа)";​C,​E 
 +3 PRINT"​Вы хотите узнать всю правду об абсолютно простых числах,​ лежащих на  
 +        ​отрезке [";​C;",";​E;"​] ? Пожалуйста..."​ 
 +4 FOR A=C TO E:IF A<​10AND(A=1ORA=2ORA=3ORA=5ORA=7)THEN PRINTA;: 
 +  ​NEXTA ELSE IF A<​10AND(A=4ORA=6ORA=8ORA=9)THEN NEXTA ELSE A$=MID$(STR$(A),​2)
 5 N=LEN(A$):​DIM A(N) 5 N=LEN(A$):​DIM A(N)
 10 FOR L=1TO N:​A(L)=VAL(MID$(A$,​L,​1)):​NEXT L:GOSUB 200 10 FOR L=1TO N:​A(L)=VAL(MID$(A$,​L,​1)):​NEXT L:GOSUB 200
Строка 2802: Строка 2817:
 125 PRINT:​PRINT"​Надеюсь,​ Вы остались довольны?​!"​ 125 PRINT:​PRINT"​Надеюсь,​ Вы остались довольны?​!"​
 130 END 130 END
-190 '​Подпрограмма,​ производящая сортировку массива A(N), состоящего из цифр числа А.+190 '​Подпрограмма,​ производящая сортировку массива A(N),  
 +     состоящего из цифр числа А.
 200 FOR M=1 TO N-1:FOR S=M+1 TO N 200 FOR M=1 TO N-1:FOR S=M+1 TO N
 210 IFA(M)<​=A(S)THEN NEXT:NEXT ELSE SWAP A(M),​A(S):​NEXT:​NEXT 210 IFA(M)<​=A(S)THEN NEXT:NEXT ELSE SWAP A(M),​A(S):​NEXT:​NEXT
 220 RETURN ​ 220 RETURN ​
-290 '​Подпрограмма,​ позволяющая определить,​ является ли число V, составленное из цифр числа A, простым.+290 '​Подпрограмма,​ позволяющая определить,​ является ли число V,  
 +     составленное из цифр числа A, простым.
 300 V=0:FOR P=1TON:​V=V+A(P)*10^(N-P):​NEXT 300 V=0:FOR P=1TON:​V=V+A(P)*10^(N-P):​NEXT
 310 FOR Q=2 TO INT(SQR(V)) 310 FOR Q=2 TO INT(SQR(V))
Строка 2812: Строка 2829:
 run run
  
-Введите два натуральных числа через запятую,​ причём второе число должно быть больше первого (эти числа задают диапазон,​ в котором ищутся абсолютно простые числа)?​ 1,100+Введите два натуральных числа через запятую,​ причём второе число ​ 
 +должно быть больше первого (эти числа задают диапазон, ​ 
 +в котором ищутся абсолютно простые числа)?​ 1,100
  
 Вы хотите узнать всю правду об абсолютно простых числах,​лежащих на отрезке [1, 100] ? Пожалуйста… Вы хотите узнать всю правду об абсолютно простых числах,​лежащих на отрезке [1, 100] ? Пожалуйста…
Строка 2838: Строка 2857:
 145 PRINT :PRINT:END 145 PRINT :PRINT:END
 150 VV$=""​ 150 VV$=""​
-160 S$=INKEY$:​IF S$=""​THEN160 ELSE IF S$=CHR$(13) THEN PRINT:​GOTO170 ELSE IF ASC (S$)<48 OR ASC(S$)>​57 THEN160 ELSE PRINT S$;:​VV$=VV$+S$:​GOTO160+160 S$=INKEY$:​IF S$=""​THEN160 ELSE IF S$=CHR$(13) THEN PRINT: 
 +    ​GOTO170 ELSE IF ASC (S$)<48 OR ASC(S$)>​57 THEN160 ELSE PRINT S$;:​VV$=VV$+S$:​GOTO160
 170 N=LEN(VV$):​IFNMOD7=0THEN180 ELSE VV$="​0"​+VV$:​ GOTO170 170 N=LEN(VV$):​IFNMOD7=0THEN180 ELSE VV$="​0"​+VV$:​ GOTO170
 180 N=N/7:FOR I=1 TO N:​S(I)=VAL(MID$(VV$,​1+(I-1)*7,​7)):​NEXT:​RETURN 180 N=N/7:FOR I=1 TO N:​S(I)=VAL(MID$(VV$,​1+(I-1)*7,​7)):​NEXT:​RETURN
Строка 2845: Строка 2865:
 210 FOR J=NA TO 0 STEP-1 210 FOR J=NA TO 0 STEP-1
 220 C(I,​J+I)=S+B(I)*A(J)-INT((S+B(I)*A(J))/​CC)*CC:​S=INT((S+B(I)*A(J))/​CC):​NEXT:​NEXT 220 C(I,​J+I)=S+B(I)*A(J)-INT((S+B(I)*A(J))/​CC)*CC:​S=INT((S+B(I)*A(J))/​CC):​NEXT:​NEXT
-230 S=0:​FORJ=NA+NBTO1 STEP-1:​FORI=1TONB:​D(J)=D(J)+C(I,​J):​NEXT:​D(J)=D(J)+S:​S=INT((D(J)+S)/​CC):​D(J)=D(J)-INT(D(J)/​CC)*CC:​NEXT:​RETURN+230 S=0:​FORJ=NA+NBTO1 STEP-1:​FORI=1TONB:​D(J)=D(J)+C(I,​J):​NEXT:​D(J)=D(J)+S:​ 
 +    ​S=INT((D(J)+S)/​CC):​D(J)=D(J)-INT(D(J)/​CC)*CC:​NEXT:​RETURN
 run run
 Введите 1-й множитель Введите 1-й множитель
Строка 2859: Строка 2880:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify+<WRAP half column><​WRAP ​right
-У попа была собака,​ он её любил.\\ ​ +У попа была собака,​ он её любил. 
-Она съела кусок мяса — он её убил!\\ ​ +\\ Она съела кусок мяса — он её убил! 
-Убил и закопал,​ и надпись написал:​\\ ​ +\\ Убил и закопал,​ и надпись написал:​ 
-"У попа была собака,​ он её любил.\\ ​ +\\ "У попа была собака,​ он её любил. 
-Она съела кусок мяса — …"+\\ Она съела кусок мяса — …"
 <WRAP rightalign>​ <WRAP rightalign>​
 —//Из русского народного фольклора//​ —//Из русского народного фольклора//​
Строка 2935: Строка 2956:
     * a) {{.examples:​0441-121.bas|}} \\ [[+tab|wmsxbpge>​0441-121.bas]] <​code>​     * a) {{.examples:​0441-121.bas|}} \\ [[+tab|wmsxbpge>​0441-121.bas]] <​code>​
 10 INPUT K 10 INPUT K
-20 FOR N=0 TO K:C=1:FOR M=1 TO N:IF M>N THEN NEXTN ELSE C=(N-M+1)/​M*C:​PRINT N;​M;​FIX(C+.5):​NEXT:​NEXT+20 FOR N=0 TO K:C=1:FOR M=1 TO N:IF M>N THEN NEXTN  
 +   ELSE C=(N-M+1)/​M*C:​PRINT N;​M;​FIX(C+.5):​NEXT:​NEXT
 run run
 ? 3 ? 3
Строка 2949: Строка 2971:
 NEW NEW
 Ok Ok
-5 '​Программа находит число сочетаний из N по M по формуле (∗) с применением рекурсивной подпрограммы.+5 '​Программа находит число сочетаний из N по M по формуле (∗)  
 +   с применением рекурсивной подпрограммы.
 10 INPUT N,​M:​C=N:​GOSUB100:​PRINT FIX(C+.5):​END 10 INPUT N,​M:​C=N:​GOSUB100:​PRINT FIX(C+.5):​END
 100 IF M>1THEN C=C*(N-M+1)/​M:​M=M-1:​GOSUB100:​RETURN ELSE RETURN 100 IF M>1THEN C=C*(N-M+1)/​M:​M=M-1:​GOSUB100:​RETURN ELSE RETURN
Строка 2986: Строка 3009:
 150 'В RMV$ - удаляемые символы 150 'В RMV$ - удаляемые символы
 160 'В S$ - исходная строка и результат 160 'В S$ - исходная строка и результат
-200 IF INSTR(1,​S$,​RMV$)<>​0 THEN S$=LEFT$(S$,​INSTR(1,​S$,​RMV$)-1)+RIGHT$(S$,​LEN(S$)-INSTR(1,​S$,​RMV$)):​GOSUB 200+200 IF INSTR(1,​S$,​RMV$)<>​0 THEN S$=LEFT$(S$,​INSTR(1,​S$,​RMV$)-1)+ 
 +    ​RIGHT$(S$,​LEN(S$)-INSTR(1,​S$,​RMV$)):​GOSUB 200
 210 RETURN 210 RETURN
 </​code>​ </​code>​
msx/basic_dialogue_programming_language/004.1663422682.txt.gz · Последние изменения: 2022-09-17 16:51 — GreyWolf