Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
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> |