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

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


msx:basic_dialogue_programming_language:003

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:basic_dialogue_programming_language:003 [2022-09-17 12:09]
GreyWolf
msx:basic_dialogue_programming_language:003 [2023-02-19 16:07] (текущий)
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
-… и если ничто уже не помогает — посмотри инструкцию для пользователя.+... и если ничто уже не помогает — 
 +\\ посмотри инструкцию для пользователя.
 <WRAP rightalign>​ <WRAP rightalign>​
 —//Из завещания неизвестного программиста//​ —//Из завещания неизвестного программиста//​
Строка 23: Строка 24:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify+<WRAP half column><​WRAP ​right
-квалификация программистов является убывающей функцией от +...квалификация программистов является убывающей функцией от 
-плотности предложений ''​GOTO''​ в создаваемых ими программах.+\\ плотности предложений ''​GOTO''​ в создаваемых ими программах.
 <WRAP rightalign>​ <WRAP rightalign>​
 —//​Э.Дейкстра//​ —//​Э.Дейкстра//​
Строка 97: Строка 98:
 <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>​
Строка 446: Строка 447:
 NEW NEW
 Ok Ok
-10 INPUT"​Если Вы мужчина,​ то нажмите клавишу '​SHIFT'​+'​1',​а если Вы женщина,​ то нажмите клавишу '​клюшка'";​X%+10 INPUT"​Если Вы мужчина,​ то нажмите клавишу '​SHIFT'​+'​1',​ 
 +         а если Вы женщина,​ то нажмите клавишу '​клюшка'";​X%
 20 INPUT "​Укажите Ваш рост в метрах";​L 20 INPUT "​Укажите Ваш рост в метрах";​L
 30 INPUT"​Укажите обхват запястья сильнейшей руки в см";​Y 30 INPUT"​Укажите обхват запястья сильнейшей руки в см";​Y
 35 PRINT"​Ваш идеальный вес :" 35 PRINT"​Ваш идеальный вес :"
-40 IF X%=1 THEN IF Y>18 THEN PRINTUSING"###​.###";​(L/​.0254*4-128)*.4536*1.1;​ELSE PRINTUSING "###​.###";​ (L/​.0254*4-128)*.4536;​ELSE IF Y>16.5 THEN PRINTUSING "###​.###";​L/​.0254*3.5-108)*.4536*1.1;​ELSE PRINTUSING "###​.###";​(L/​.0254*3.5-108)*.4536;​+40 IF X%=1 THEN IF Y>18 THEN PRINTUSING"###​.###";​(L/​.0254*4-128)*.4536*1.1;​ 
 +   ELSE PRINTUSING "###​.###";​ (L/​.0254*4-128)*.4536;​ 
 +   ELSE IF Y>16.5 THEN PRINTUSING "###​.###";​L/​.0254*3.5-108)*.4536*1.1;​ 
 +   ELSE PRINTUSING "###​.###";​(L/​.0254*3.5-108)*.4536;​
 50 PRINT " кг":​END 50 PRINT " кг":​END
 run run
  
-Если Вы мужчина,​ то нажмите клавишу '​SHIFT'​+'​1',​ а если Вы женщина,​ то нажмите клавишу '​клюшка'?​ 1+Если Вы мужчина,​ то нажмите клавишу '​SHIFT'​+'​1', ​ 
 + а если Вы женщина,​ то нажмите клавишу '​клюшка'?​ 1
 Укажите Ваш рост в метрах?​ 1.745 Укажите Ваш рост в метрах?​ 1.745
 Укажите обхват запястья сильнейшей руки в см? 18.5 Укажите обхват запястья сильнейшей руки в см? 18.5
Строка 481: Строка 487:
 100 INPUT"​Задайте a,​b,​c";​A,​B,​C 100 INPUT"​Задайте a,​b,​c";​A,​B,​C
 110 DISC=B*B-4*A*C:​W=1/​2/​A:​Z=-B/​2/​A 110 DISC=B*B-4*A*C:​W=1/​2/​A:​Z=-B/​2/​A
-120 IF ABS(DISC)<​1.E-14 THEN PRINT"​Двойной корень,​x=";​Z:​GOTO 100'​Условие ABS(DISC)<​1.E-14 взято вместо условия DISC=0 с целью компенсации ошибок округления.+120 IF ABS(DISC)<​1.E-14 THEN PRINT"​Двойной корень,​x=";​Z:​GOTO 100 
 +    ​'​Условие ABS(DISC)<​1.E-14 взято вместо условия ​ 
 +     DISC=0 с целью компенсации ошибок округления.
 130 IF DISC<0 THEN 160 130 IF DISC<0 THEN 160
 140 PRINT "​Корни";​Z+SQR(DISC)*W;​ 140 PRINT "​Корни";​Z+SQR(DISC)*W;​
Строка 501: Строка 509:
 Заметим,​ что указанная программа "не работает"​ в том случае,​ когда а=0. Поэтому добавим к программе строку:​ Заметим,​ что указанная программа "не работает"​ в том случае,​ когда а=0. Поэтому добавим к программе строку:​
 <​code>​ <​code>​
-105 IF A=0 THEN IF B=0 THEN IF C=0 THEN PRINT"​x-любое":​GOTO 100 ELSE PRINT"​решений нет":​GOTO 100 ELSE PRINT"​корень равен";​-C/​B:​GOTO 100+105 IF A=0 THEN IF B=0 THEN IF C=0 THEN PRINT"​x-любое":​ 
 +    ​GOTO 100 ELSE PRINT"​решений нет":​ 
 +    ​GOTO 100 ELSE PRINT"​корень равен";​-C/​B:​ 
 +    ​GOTO 100
 </​code>​ </​code>​
 Это приведёт к следующему результату:​ Это приведёт к следующему результату:​
Строка 516: Строка 527:
 <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>​
 —//​Л.Кронекер//​ —//​Л.Кронекер//​
Строка 785: Строка 797:
 <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>​
 —//​В.Кожевников//​ —//​В.Кожевников//​
Строка 1120: Строка 1132:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify+<WRAP half column><​WRAP ​right
-5% текста программы занимают 90% времени её выполнения.<​WRAP rightalign>​+5% текста программы занимают 90%  
 +\\ времени её выполнения.<​WRAP rightalign>​
 —//​Аксиома программирования//​ —//​Аксиома программирования//​
 </​WRAP></​WRAP>​ </​WRAP></​WRAP>​
Строка 1150: Строка 1163:
 20 DIM A(N) '​Массив А описан! 20 DIM A(N) '​Массив А описан!
 30 FOR I=0 TO N:INPUT A(I):NEXT I 30 FOR I=0 TO N:INPUT A(I):NEXT I
-40'​Данный фрагмент позволяет осуществить ввод элементов одномерного массива А (в массиве N+1 элемент!)+40'​Данный фрагмент позволяет осуществить ввод элементов ​ 
 +   одномерного массива А (в массиве N+1 элемент!)
 </​code>​ </​code>​
 Приведём ещё один способ решения указанной проблемы:​ Приведём ещё один способ решения указанной проблемы:​
Строка 1366: Строка 1380:
 Ok Ok
 </​code>​ </​code>​
-Сравните полученные результаты с таблицей,​ приведённой ранее в [[01#I.7.2. Операции отношения. Логические операции|разделе I.7.2]].</​WRAP>​+Сравните полученные результаты с таблицей,​ приведённой ранее в [[001#​I.7.2. Операции отношения. Логические операции|разделе I.7.2]].</​WRAP>​
   * 5) {{anchor:​e034-25}} {{.examples:​034-25.bas|}} \\ [[+tab|wmsxbpge>​034-25.bas]] <​code>​   * 5) {{anchor:​e034-25}} {{.examples:​034-25.bas|}} \\ [[+tab|wmsxbpge>​034-25.bas]] <​code>​
 NEW NEW
Строка 1410: Строка 1424:
 <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>​
 —//​Г.Лейбниц//​ —//​Г.Лейбниц//​
Строка 1420: Строка 1434:
 <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>​
 —//​Р.Фейнман//​ —//​Р.Фейнман//​
Строка 1432: Строка 1446:
 20 FOR I=1 TO 0 STEP 1 '​Оригинальный заголовок цикла, не правда ли? 20 FOR I=1 TO 0 STEP 1 '​Оригинальный заголовок цикла, не правда ли?
 30   ​тело цикла 30   ​тело цикла
-40   I = условие '​Потрясающе! Если условие ложно, то I=0, и цикл заканчивается;​ если условие истинно,​то I=-1, и мы продолжим выполнение тела цикла.+40   I = условие '​Потрясающе! Если условие ложно, то I=0, и цикл заканчивается; ​ 
 +     если условие истинно,​то I=-1, и мы продолжим выполнение тела цикла.
 50 NEXT I 50 NEXT I
 60 … '​Продолжение программы. 60 … '​Продолжение программы.
Строка 1483: Строка 1498:
 <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>​
Строка 1492: Строка 1507:
 <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>​
 —//​Н.Винер//​ —//​Н.Винер//​
Строка 1503: Строка 1522:
 NEW NEW
 Ok Ok
-5 DEFINT I:INPUT A1,​AN,​D'​А1-первый член арифметической прогрессии;​АN-последний ее член;​D-знаменатель (D>0!)+5 DEFINT I:INPUT A1,​AN,​D'​А1-первый член арифметической прогрессии;​ 
 +                         АN-последний ее член;​D-знаменатель (D>0!)
 7 IF D<0 OR A1>AN THEN ?"​Прогрессия должна быть возрастающей! Повторите ввод!":​GOTO 5 7 IF D<0 OR A1>AN THEN ?"​Прогрессия должна быть возрастающей! Повторите ввод!":​GOTO 5
 10 S=0:N=A1 10 S=0:N=A1
Строка 1635: Строка 1655:
 <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>​
 —//​А.Пушкин. Моцарт и Сальери//​ —//​А.Пушкин. Моцарт и Сальери//​
Строка 1645: Строка 1665:
 Обратимся теперь к лирике. Вот стихотворение Л.Мартынова (речь в нем идёт о девушке):​ Обратимся теперь к лирике. Вот стихотворение Л.Мартынова (речь в нем идёт о девушке):​
 <WRAP group 99%> <WRAP group 99%>
-<WRAP half column><​WRAP ​justify+<WRAP half column><​WRAP ​right
-Кто геометрическое среднее между атомом и Солнцем?​ \\ +Кто геометрическое среднее между атомом и Солнцем?​ 
-Ты, первое и последнее воплощение красоты. \\ +\\ Ты, первое и последнее воплощение красоты. 
-Не имеющая представления о строении вещества,​ \\ +\\ Не имеющая представления о строении вещества,​ 
-слушающая в изумлении эти непонятные слова. \\ +\\ слушающая в изумлении эти непонятные слова. 
-Неспособная принять их к сведению,​будучи ужасно молодой. \\ +\\ Неспособная принять их к сведению,​будучи ужасно молодой. 
-Вот ведь, какова ты, нечто среднее между атомом и звездой.+\\ Вот ведь, какова ты, нечто среднее между атомом и звездой.
 </​WRAP>​ </​WRAP>​
 <WRAP half column></​WRAP>​ <WRAP half column></​WRAP>​
Строка 1680: Строка 1700:
 <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>​
 —//​Козьма Прутков//​ —//​Козьма Прутков//​
Строка 1690: Строка 1710:
 <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>​
Строка 1746: Строка 1766:
 <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>​
Строка 1755: Строка 1775:
 <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>​
Строка 1812: Строка 1832:
 Ok Ok
 10 '​Сортировка с применением индекса. 10 '​Сортировка с применением индекса.
-11 '​Вместо переупорядочения самих значений в процессе сортировки можно образовать вспомогательный массив индексов,​ в котором отмечаются правильные места значений в массиве. +11 '​Вместо переупорядочения самих значений в процессе сортировки ​ 
-12 'Во время сортировки значения остаются на исходных местах,​ а изменяется лишь массив индексов. По окончании сортировки массив индексов используется для копирования сортируемых значений в новый массив или служит справочником для работы с исходным массивом.+    ​можно образовать вспомогательный массив индексов,​ в котором ​ 
 +    ​отмечаются правильные места значений в массиве. 
 +12 'Во время сортировки значения остаются на исходных местах, ​ 
 +    ​а изменяется лишь массив индексов. По окончании сортировки ​ 
 +    ​массив индексов используется для копирования сортируемых значений ​ 
 +    ​в новый массив или служит справочником для работы с исходным массивом.
 20 INPUT N:DIM A(N),I(N) 20 INPUT N:DIM A(N),I(N)
 30  FOR M=1 TO N:INPUT A(M):NEXT M 30  FOR M=1 TO N:INPUT A(M):NEXT M
Строка 1861: Строка 1886:
 10 DEFINTN,​I,​J:​INPUT"​Введите N";​N:​DIM X(N):​C=RND(-TIME) 10 DEFINTN,​I,​J:​INPUT"​Введите N";​N:​DIM X(N):​C=RND(-TIME)
 20 FOR I=1 TO N:​X(I)=INT(3*RND(1)) 20 FOR I=1 TO N:​X(I)=INT(3*RND(1))
-30 PRINT X(I);:NEXT I:​PRINT'​Сформирован массив псевдослучайных чисел для облегчения процесса тестирования программы!+30 PRINT X(I);:NEXT I:​PRINT'​Сформирован массив псевдослучайных чисел для ​ 
 +                            ​облегчения процесса тестирования программы!
 50 FOR J=1 TO N-1:FOR I=1 TO N-1 50 FOR J=1 TO N-1:FOR I=1 TO N-1
 60 IF X(I)=0 THEN SWAP X(I),X(I+1) 60 IF X(I)=0 THEN SWAP X(I),X(I+1)
Строка 1948: Строка 1974:
 <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>​
Строка 1959: Строка 1985:
 <​code>​ <​code>​
 1 '​Пример "​абсолютно нечитабельной"​ программы! 1 '​Пример "​абсолютно нечитабельной"​ программы!
-5 DEFINTN,​I:​INPUTN:​Y$="​Нет":​FORI=700TO799:​IFI\100<>​(IMOD100)\10THENIFI\100<>​IMOD100MOD10THENIF(IMOD100)\10<>​IMOD100MOD10THENIFIMODN=0THENY$="​Есть!":​CLS:​PRINTY$,​I:​ENDELSEIFI=798THENCLS:​PRINTY$:​ENDELSENEXTELSENEXTELSENEXTELSENEXT+5 DEFINTN,​I:​INPUTN:​Y$="​Нет":​FORI=700TO799:​IFI\100<>​(IMOD100)\ 
 +  ​10THENIFI\100<>​IMOD100MOD10THENIF(IMOD100) 
 +  ​\10<>​IMOD100MOD10THENIFIMODN=0THENY$="​Есть!":​CLS:​ 
 +  ​PRINTY$,​I:​ENDELSEIFI=798THENCLS:​PRINTY$:​ 
 +  ​ENDELSENEXTELSENEXTELSENEXTELSENEXT
 run run
 ? 5 ? 5
Строка 2007: Строка 2037:
 10 DEFINT N,​I,​J,​K,​M:​INPUT N:K=1:DIM A(N):​X=RND(-TIME) 10 DEFINT N,​I,​J,​K,​M:​INPUT N:K=1:DIM A(N):​X=RND(-TIME)
 20 FOR I=1 TO N:​A(I)=INT(12*RND(1)):​PRINT A(I);:NEXT 20 FOR I=1 TO N:​A(I)=INT(12*RND(1)):​PRINT A(I);:NEXT
-30 '​Выделение неубывающей подпоследовательности,​ сравнение ее длины с длиной предыдущей выделенной подпоследовательности;​ наибольшая длина запоминается в переменную M (строки 40-70).+30 '​Выделение неубывающей подпоследовательности,​ сравнение ее  
 +    ​длины с длиной предыдущей выделенной подпоследовательности; ​ 
 +    ​наибольшая длина запоминается в переменную M (строки 40-70).
 40 FOR I=1 TO N-1 40 FOR I=1 TO N-1
-50 IF A(I)<​=A(I+1) THEN K=K+1:IF K>M THEN M=K:​J=I+1:​NEXT I ELSE NEXT I ELSE K=1:NEXT I+50 IF A(I)<​=A(I+1) THEN K=K+1:IF K>M THEN M=K:J=I+1: 
 +   NEXT I ELSE NEXT I ELSE K=1:NEXT I
 60 ?:?"​Наибольшая длина:";​M:​PRINT"​Подпоследовательность:";​ 60 ?:?"​Наибольшая длина:";​M:​PRINT"​Подпоследовательность:";​
 70 FOR I=J-M+1 TO J:PRINT A(I);:NEXT 70 FOR I=J-M+1 TO J:PRINT A(I);:NEXT
Строка 2082: Строка 2115:
 20 DEFINT H,​I-K,​M:​INPUT"​Число точек";​H:​D=RND(-TIME):​M=2*H 20 DEFINT H,​I-K,​M:​INPUT"​Число точек";​H:​D=RND(-TIME):​M=2*H
 30 DIM A(M),​B(M),​C(M):​IF H<3 THEN RUN 20 30 DIM A(M),​B(M),​C(M):​IF H<3 THEN RUN 20
-40 FOR I=1 TO M:​A(I)=INT(190*RND(1)):​B(I)=A(I):​C(I)=A(I):​NEXT:​S=0:​P=900 '​Генерируем три одинаковых массива координат точек плоскости случайным образом.+40 FOR I=1 TO M:​A(I)=INT(190*RND(1)):​B(I)=A(I):​C(I)=A(I):​NEXT:​S=0:​P=900 ​ 
 +   '​Генерируем три одинаковых массива координат точек плоскости случайным образом.
 50 FOR I=2 TO M STEP 2 50 FOR I=2 TO M STEP 2
 60 FOR J=2 TO M STEP 2 60 FOR J=2 TO M STEP 2
 70 FOR K=2 TO M STEP 2 70 FOR K=2 TO M STEP 2
-80 U=SQR((A(I)-B(J))^2+(A(I-1)-B(J-1))^2):​Q=SQR((A(I)-C(K))^2+(A(I-1)-C(K-1))^2):​W=SQR((B(J)-C(K))^2+(B(J-1)-C(K-1))^2):​G=U+Q+W '​Нашли периметр треугольника.+80 U=SQR((A(I)-B(J))^2+(A(I-1)-B(J-1))^2):​Q=SQR((A(I)-C(K))^2+(A(I-1)-C(K-1))^2):​ 
 +   W=SQR((B(J)-C(K))^2+(B(J-1)-C(K-1))^2):​G=U+Q+W '​Нашли периметр треугольника.
 90 V=SQR((G/​2)*(G/​2-U)*(G/​2-Q)*(G/​2-W)) '​Нашли его площадь. 90 V=SQR((G/​2)*(G/​2-U)*(G/​2-Q)*(G/​2-W)) '​Нашли его площадь.
-100 IF V<1.E-10 THEN 130'​Этим оператором гарантируем,​ что взяты три различные точки, не лежащие на одной прямой. +100 IF V<1.E-10 THEN 130'​Этим оператором гарантируем,​ что взяты три ​ 
-110 IF G<P THEN P=G:​A1=A(I):​A2=A(I-1):​B1=B(J):​B2=B(J-1):​C1=C(K):​C2=C(K-1)'​Ищем треугольник с наименьшим периметром и запоминаем координаты его вершин. +                         различные точки, не лежащие на одной прямой. 
-120 IF V>S THEN S=V:​A3=A(I):​A4=A(I-1):​B3=B(J):​B4=B(J-1):​C3=C(K):​C4=C(K-1)'​Ищем треугольник наибольшей площади и запоминаем координаты его вершин+110 IF G<P THEN P=G:​A1=A(I):​A2=A(I-1):​B1=B(J):​B2=B(J-1):​C1=C(K):​C2=C(K-1) 
 +    ​'​Ищем треугольник с наименьшим периметром и запоминаем координаты его вершин. 
 +120 IF V>S THEN S=V:​A3=A(I):​A4=A(I-1):​B3=B(J):​B4=B(J-1):​C3=C(K):​C4=C(K-1) 
 +    ​'​Ищем треугольник наибольшей площади и запоминаем координаты его вершин
 130 NEXT K,J,I 130 NEXT K,J,I
-140 PRINT"​Вершины треугольника наиб.площади:​(";​A3;",";​A4;"​),​(";​B3;",";​B4;"​),​(";​C3;",";​C4;"​);"​+140 PRINT"​Вершины треугольника наиб.площади:​ 
 +    ​(";​A3;",";​A4;"​),​(";​B3;",";​B4;"​),​(";​C3;",";​C4;"​);"​
 150 PRINT"​Площадь треугольника:";​S 150 PRINT"​Площадь треугольника:";​S
-160 PRINT"​Вершины треугольника наим.периметра:​(";​A1;",";​A2;"​),​(";​B1;",";​B2;"​),​(";​C1;",";​C2;"​);"​+160 PRINT"​Вершины треугольника наим.периметра:​ 
 +    ​(";​A1;",";​A2;"​),​(";​B1;",";​B2;"​),​(";​C1;",";​C2;"​);"​
 170 PRINT"​Периметр треугольника:";​P 170 PRINT"​Периметр треугольника:";​P
 180 FOR I=1 TO 5000:NEXT '​Задержка по времени (≈13 секунд)! 180 FOR I=1 TO 5000:NEXT '​Задержка по времени (≈13 секунд)!
Строка 2125: Строка 2165:
 20 DIM X(N),​Y(N),​Z(N):​U=RND(-TIME) 20 DIM X(N),​Y(N),​Z(N):​U=RND(-TIME)
 25 PRINT " X  Y  Z " 25 PRINT " X  Y  Z "
-30 FOR I=1 TO N:​X(I)=INT(11*RND(1)-5):​Y(I)=INT(11*RND(1)-5):​Z(I)=INT(11*RND(1)-5):​PRINTX(I)Y(I)Z(I):​NEXT+30 FOR I=1 TO N:​X(I)=INT(11*RND(1)-5):​Y(I)=INT(11*RND(1)-5):​ 
 +                ​Z(I)=INT(11*RND(1)-5):​PRINTX(I)Y(I)Z(I):​NEXT
 35 '​Подсчет количества точек,​лежащих в шаре (строки 40-60). 35 '​Подсчет количества точек,​лежащих в шаре (строки 40-60).
 40 FOR I=1 TO N 40 FOR I=1 TO N
Строка 2138: Строка 2179:
 110 IF X(I)+Y(I)+Z(I)=<​3 AND (X(I))^2+(Y(I))^2+(Z(I))^2<​=25 THEN B=B+1NEXT ELSE NEXT 110 IF X(I)+Y(I)+Z(I)=<​3 AND (X(I))^2+(Y(I))^2+(Z(I))^2<​=25 THEN B=B+1NEXT ELSE NEXT
 120 PRINT "​Количество точек,​принадлежащих пересечению шара и полупространства:";​B 120 PRINT "​Количество точек,​принадлежащих пересечению шара и полупространства:";​B
-125 '​Подсчет количества точек,​принадлежащих объединению шара и полупространства (строки 130-140)+125 '​Подсчет количества точек,​принадлежащих объединению шара и  
 +     полупространства (строки 130-140)
 130 P=C-B+K 130 P=C-B+K
 140 PRINT "​Количество точек,​принадлежащих объединению шара и полупространства:";​P 140 PRINT "​Количество точек,​принадлежащих объединению шара и полупространства:";​P
Строка 2169: Строка 2211:
 40 K=N*M:DIM B(K) 40 K=N*M:DIM B(K)
 50 FORI=1TO N:FOR J=1 TO M:​Y=M*(I-1)+J:​B(Y)=A(I,​J):​NEXTJ,​I 50 FORI=1TO N:FOR J=1 TO M:​Y=M*(I-1)+J:​B(Y)=A(I,​J):​NEXTJ,​I
-60 '​Этот блок (строки 70-110) позволяет найти минимальное число элементов,​ встречающихся в массиве более одного раза.+60 '​Этот блок (строки 70-110) позволяет найти минимальное число элементов, ​ 
 +    ​встречающихся в массиве более одного раза.
 70 FOR Y=1 TO K-1:FOR L=Y+1 TO K 70 FOR Y=1 TO K-1:FOR L=Y+1 TO K
 80 IF B(Y)<​B(L) THEN 90 ELSE SWAP B(Y),B(L) 80 IF B(Y)<​B(L) THEN 90 ELSE SWAP B(Y),B(L)
 90 NEXT:NEXT 90 NEXT:NEXT
 100 FOR I=1 TO K-1 100 FOR I=1 TO K-1
-110 IF B(I)=B(I+1) THEN PRINT"​Минимальное число:";​B(I) ELSE NEXTI:​PRINT"​Такого элемента нет!"​+110 IF B(I)=B(I+1) THEN PRINT"​Минимальное число:";​B(I) ELSE NEXTI: 
 +    ​PRINT"​Такого элемента нет!"​
 run run
 ? 3,4 ? 3,4
Строка 2195: Строка 2239:
 NEW NEW
 Ok Ok
-5 '​Идентификация массива A(N,M) псевдослучайными целыми числами и вывод его на экран дисплея для контроля (строки 10-20).+5 '​Идентификация массива A(N,M) псевдослучайными целыми числами и  
 +   вывод его на экран дисплея для контроля (строки 10-20).
 10 DEFINT N,​M,​I,​J,​Y,​K,​L:​INPUT N,M:DIM A(N,​M):​X=RND(-TIME) 10 DEFINT N,​M,​I,​J,​Y,​K,​L:​INPUT N,M:DIM A(N,​M):​X=RND(-TIME)
-20 FOR I=1 TO N:FOR J=1 TO M:​A(I,​J)=INT(10*RND(1)):?​A(I,​J);:​NEXT J:?:​NEXTI:​IF N+M=2 THEN ?"​Один-одинешенек!":​END+20 FOR I=1 TO N:FOR J=1 TO M:​A(I,​J)=INT(10*RND(1)):?​A(I,​J);:​ 
 +   NEXT J:?:​NEXTI:​IF N+M=2 THEN ?"​Один-одинешенек!":​END
 30 '​Идентификация дополнительного массива B (строки 40-50). 30 '​Идентификация дополнительного массива B (строки 40-50).
 40 K=N*M:DIM B(K) 40 K=N*M:DIM B(K)
Строка 2205: Строка 2251:
 80 IF B(Y)<​B(L) THEN 90 ELSE SWAP B(Y),B(L) 80 IF B(Y)<​B(L) THEN 90 ELSE SWAP B(Y),B(L)
 90 NEXT:NEXT 90 NEXT:NEXT
-93 '​Подсчет количества различных элементов в массиве B и вывод результата на экран дисплея (строки 95-120).+93 '​Подсчет количества различных элементов в массиве B и  
 +    ​вывод результата на экран дисплея (строки 95-120).
 95 U=1 95 U=1
 100 FOR I=1 TO K-1 100 FOR I=1 TO K-1
Строка 2236: Строка 2283:
 20 FOR I=1 TO M:FOR J=1 TO N 20 FOR I=1 TO M:FOR J=1 TO N
 30 A(I,​J)=INT(11*RND(1)-5):​PRINT A(I,​J);:​NEXTJ:?:​NEXT I 30 A(I,​J)=INT(11*RND(1)-5):​PRINT A(I,​J);:​NEXTJ:?:​NEXT I
-45 IF M=1 AND N=1 THEN IF A(1,1)<0 THEN ?"​Искомый элемент:";​A(1,​1):​END ELSE ?"​Такого элемента нет!":​END'​Случай M=N=1 +45 IF M=1 AND N=1 THEN IF A(1,1)<0 THEN ?"​Искомый элемент:";​ 
-47 '​Нахождение отрицательного элемента массива A, у которого сумма индексов минимальна (строки 50-70).+   A(1,1):END ELSE ?"​Такого элемента нет!":​END'​Случай M=N=1 
 +47 '​Нахождение отрицательного элемента массива A, у которого ​ 
 +    ​сумма индексов минимальна (строки 50-70).
 50 FOR I=1 TO M:FOR J=1 TO N 50 FOR I=1 TO M:FOR J=1 TO N
-60 IF A(I,J)<0 THEN IF I+J<K THEN K=I+J:​C=A(I,​J):​NEXTJ:​NEXTI ELSE NEXT J:NEXT I ELSE NEXT J:NEXT I+60 IF A(I,J)<0 THEN IF I+J<K THEN K=I+J:​C=A(I,​J):​NEXTJ:​NEXTI ​ 
 +   ELSE NEXT J:NEXT I ELSE NEXT J:NEXT I
 70 PRINT"​Искомый отрицат.элемент:";​C 70 PRINT"​Искомый отрицат.элемент:";​C
 run run
Строка 2263: Строка 2313:
 Ok Ok
 10 INPUT"​FORMAT";​A$ 10 INPUT"​FORMAT";​A$
-15 '​FORMAT-строковое выражение,​ состоящее из символов "#"​ и десятичной точки (например,​ ##.###); используется в операторе ''​PRINTUSING''​ (строка 210) для вывода элементов массива с требуемой точностью.+15 '​FORMAT-строковое выражение,​ состоящее из символов "#"​ и 
 +     десятичной точки (например,​ ##.###); используется в  
 +     операторе ''​PRINTUSING''​ (строка 210) для вывода элементов массива с требуемой точностью.
 16 '​Точность определяется количеством символов "#",​ стоящих правее десятичной точки. 16 '​Точность определяется количеством символов "#",​ стоящих правее десятичной точки.
 20 DEFINT N,​I,​J:​INPUT"​Число строк (столбцов)";​N 20 DEFINT N,​I,​J:​INPUT"​Число строк (столбцов)";​N
 30 DIM A(N,​N),​B(N,​N):​K=RND(-TIME) 30 DIM A(N,​N),​B(N,​N):​K=RND(-TIME)
-35 '​Формирование матрицы ​ A, элементами которой являются случайные числа (для облегчения тестирования программы!).+35 '​Формирование матрицы ​ A, элементами которой являются ​ 
 +    ​случайные числа (для облегчения тестирования программы!).
 40 FOR I=1 TO N:FOR J=1 TO N 40 FOR I=1 TO N:FOR J=1 TO N
 50 A(I,​J)=INT(10*RND(1)):​PRINT A(I,J); 50 A(I,​J)=INT(10*RND(1)):​PRINT A(I,J);
 60 NEXT J:​PRINT:​NEXT I:​PRINT"​Результат сглаживания"​ 60 NEXT J:​PRINT:​NEXT I:​PRINT"​Результат сглаживания"​
 70 IF N=2 THEN 160 ELSE IF N=1 THEN ?"​Спорный вопрос!":​END 70 IF N=2 THEN 160 ELSE IF N=1 THEN ?"​Спорный вопрос!":​END
-75 '​Программные строки 80-190 позволяют сгладить матрицу A(N,​N).Результат сглаживания - матрица B(N,N).+75 '​Программные строки 80-190 позволяют сгладить матрицу A(N,N). 
 +    ​Результат сглаживания - матрица B(N,N).
 80 FOR I=2 TO N-1:FOR J=2 TO N-1 80 FOR I=2 TO N-1:FOR J=2 TO N-1
 90 B(I,​J)=(A(I-1,​J)+A(I,​J-1)+A(I,​J+1)+A(I+1,​J))/​4:​NEXT J,I 90 B(I,​J)=(A(I-1,​J)+A(I,​J-1)+A(I,​J+1)+A(I+1,​J))/​4:​NEXT J,I
Строка 2307: Строка 2361:
 20 DIM A(M,​M):​X=RND(-TIME) 20 DIM A(M,​M):​X=RND(-TIME)
 30 FOR I=1 TO M:FOR J=1 TO M:​A(I,​J)=INT(10*RND(1)):​PRINT A(I,​J);:​NEXTJ:​PRINT:​NEXT I 30 FOR I=1 TO M:FOR J=1 TO M:​A(I,​J)=INT(10*RND(1)):​PRINT A(I,​J);:​NEXTJ:​PRINT:​NEXT I
-35 '​Нахождение максимальной среди сумм элементов диагоналей,​ расположенных выше главной (строки 40-50).+35 '​Нахождение максимальной среди сумм элементов диагоналей, ​ 
 +    ​расположенных выше главной (строки 40-50).
 40 FOR K=1 TO M-1:FOR I=1 TO M:FOR J=1 TO M 40 FOR K=1 TO M-1:FOR I=1 TO M:FOR J=1 TO M
-50 IF J=I+K THEN B=B+A(I,​J):​NEXT J:NEXT I ELSE NEXTJ:​NEXTI:​IF B>C THEN C=B:​B=0:​NEXT K ELSE B=0:NEXT K +50 IF J=I+K THEN B=B+A(I,​J):​NEXT J:NEXT I ELSE NEXTJ:​NEXTI:​ 
-55 '​Нахождение максимальной среди сумм элементов диагоналей,​ расположенных ниже главной (строки 60-70).+   IF B>C THEN C=B:​B=0:​NEXT K ELSE B=0:NEXT K 
 +55 '​Нахождение максимальной среди сумм элементов диагоналей, ​ 
 +    ​расположенных ниже главной (строки 60-70).
 60 FOR K=1 TO M-1:FOR I=1 TO M:FOR J=1 TO M 60 FOR K=1 TO M-1:FOR I=1 TO M:FOR J=1 TO M
-70 IF J=I-K THEN B=B+A(I,​J):​NEXT J:NEXTI ELSE NEXTJ:​NEXTI:​IF B>D THEN D=B:​B=0:​NEXT K ELSE B=0:NEXT K +70 IF J=I-K THEN B=B+A(I,​J):​NEXT J:NEXTI ELSE NEXTJ:​NEXTI:​ 
-80 IF C>D THEN PRINT C ELSE PRINT D '​Сравнение этих максимумов и вывод большего на экран дисплея.+   IF B>D THEN D=B:​B=0:​NEXT K ELSE B=0:NEXT K 
 +80 IF C>D THEN PRINT C ELSE PRINT D  
 +   '​Сравнение этих максимумов и вывод большего на экран дисплея.
 run run
 ? 4 ? 4
Строка 2348: Строка 2407:
 Ok Ok
 10 DEFINT M,​N,​I,​J,​K,​A:​INPUT"​Введите M и N";M,N 10 DEFINT M,​N,​I,​J,​K,​A:​INPUT"​Введите M и N";M,N
-Кто геометрическое среднее между атомом и Солнцем?​ \\ 
 20 INPUT"​Числовой отрезок[X,​Y]";​X,​Y 20 INPUT"​Числовой отрезок[X,​Y]";​X,​Y
 30 Z=RND(-TIME):​DIM B(M,​N),​A(M,​N) 30 Z=RND(-TIME):​DIM B(M,​N),​A(M,​N)
Строка 2379: Строка 2437:
 NEW NEW
 Ok Ok
-10 DEFINT M,​N,​I,​J,​A,​K:​INPUT"​Введите M и N";​M,​N:​X=RND(-TIME):​DIM A(M,N):IF M<1 OR N<1 THEN RUN 10+10 DEFINT M,​N,​I,​J,​A,​K:​INPUT"​Введите M и N";​M,​N:​X=RND(-TIME):​DIM A(M,N): 
 +   IF M<1 OR N<1 THEN RUN 10
 30 FOR I=1 TO M:FOR J=1 TO N 30 FOR I=1 TO M:FOR J=1 TO N
-40 A(I,​J)=INT(30*RND(1)+1):​IF A(I,J)=2 THEN PRINTUSING"​\ ​ \";​STR$(A(I,​J))+"​*";:​NEXT:​PRINT:​NEXT+40 A(I,​J)=INT(30*RND(1)+1):​IF A(I,J)=2 THEN PRINTUSING"​\ ​ \";​STR$(A(I,​J))+"​*";:​ 
 +   NEXT:​PRINT:​NEXT
 50 K=0:FOR K=2 TO A(I,J)-1 50 K=0:FOR K=2 TO A(I,J)-1
-60 IF A(I,​J)/​K<>​FIX(A(I,​J)/​K) THEN NEXT K:​PRINTUSING"​\ ​ \";​STR$(A(I,​J))+"​*";:​NEXT J:​PRINT:​NEXT I ELSE Y=Y+1:PRINT USING"​\ ​ \";​STR$(A(I,​J))+"​ ";:​NEXT J:​PRINT:​NEXT I+60 IF A(I,​J)/​K<>​FIX(A(I,​J)/​K) THEN NEXT K:​PRINTUSING"​\ ​ \";​STR$(A(I,​J))+"​*";:​ 
 +   NEXT J:​PRINT:​NEXT I ELSE Y=Y+1:PRINT USING"​\ ​ \";​STR$(A(I,​J))+"​ ";:​NEXT J:​PRINT:​NEXT I
 70 PRINT"​Звездочками отмечены простые числа;​составных чисел в Вашем массиве";​Y 70 PRINT"​Звездочками отмечены простые числа;​составных чисел в Вашем массиве";​Y
 run run
Строка 2404: Строка 2465:
 20 INPUT"​Числовой отрезок[X,​Y]";​X,​Y 20 INPUT"​Числовой отрезок[X,​Y]";​X,​Y
 30 Z=RND(-TIME):​DIM A[M,​N],​Q[M,​N],​L[N],​F[N] 30 Z=RND(-TIME):​DIM A[M,​N],​Q[M,​N],​L[N],​F[N]
-40 '​Заполняем массив A[M,N] случайными целыми числами из отрезка [X,Y] и копируем его в массив Q[M,​N](строки 50-70)+40 '​Заполняем массив A[M,N] случайными целыми числами из отрезка [X,Y] и  
 +    ​копируем его в массив Q[M,​N](строки 50-70)
 50 FOR I=1 TO M:FOR J=1 TO N 50 FOR I=1 TO M:FOR J=1 TO N
 60 A[I,​J]=INT((Y-X+1)*RND(1)+X):​Q[I,​J]=A[I,​J] 60 A[I,​J]=INT((Y-X+1)*RND(1)+X):​Q[I,​J]=A[I,​J]
msx/basic_dialogue_programming_language/003.1663405772.txt.gz · Последние изменения: 2022-09-17 12:09 — GreyWolf