Basic - вводный курс

Ценникодержатели А5 вертикальные (упаковка 50 штук, цена за 1 шт.)          

Условный переход

Мало того, что условный переход подразумевает выполнение тех или иных команд в зависимости от проверяемого условия, так Бейсик предоставляет нам еще и несколько вариантов действий.
Начнем с классической конструкции:

IF ... THEN ... ELSE
Или по-русски:
ЕСЛИ ... ТОГДА ... ИНАЧЕ

В записи условия можно использовать следующие символы:

  • = (равно);
  • > (больше);
  • < (меньше);
  • о или >< (не равно);
  • <= или =< (меньше или равно);
  • >= или => (больше или равно).


Мне кажется, что уже что-то должно быть понятно из самой конструкции условного оператора. Но раскроем его смысл на примере следующей программы. Допустим, в некоторой стране живут люди, говорящие только правду. Но при этом и у них есть вредные привычки, и некоторые из них курят. Для продажи сигарет сделаны автоматы, которые запрашивают возраст покупателя и реагируют на это двумя различными способами в зависимости от названной правдиво величины.

CLS
INPUT "Как Вас зовут"; N$
INPUT "Сколько Вам полных лет"; S
IF S<18 THEN ?"Вам еще рановато курить, ";N$ ELSE ?"Минздрав
России предупреждает — курение опасно для вашего здоровья!"

Программа запрашивает имя, потом возраст (все это уже не вызывает у нас никаких затруднений), а вот потом вступает в дей ствие условный оператор. Если возраст s меньше 18, то выводится надпись, что курить еще рановато (а чтобы не было очень обидно, обращается по имени). Иначе (т. е. если возраст больше либо равен 18) автомат продает сигареты, но предупреждает об опасности курения.
Еще один маленький пример. Вычислим корень квадратный из х.

CLS
INPUT "Введите любое число"; X
? "Корень квадратный из Х="; SQR(X)

Запускаем программу. Вводим число 4. Ответ 2. Вводим 121. Ответ 11. Вводим -9. Аварийное прерывание программы и сообщение об ошибке "Неверный вызов функции". Что такое? А все потому, что корень квадратный вычисляется только из положительного числа. Вот программа и "ругается". Но мы же умные, добавим в программу условный оператор, и будет она работать для любых чисел.

CLS
1:INPUT "Введите любое число";Х'
IF X>=0 THEN ? "Корень квадратный из X ="; SQR (X) ELSE ?"Корень квадратный из отрицательного числа вычислять отказываюсь. Дайте положительное число!"
:GOTO 1

Теперь программа анализирует введенное значение и, в случае его положительности, вычисляет корень, а в случае отрицательности в легкой форме раздражается и просит у пользователя другое число.
И еще пример с графикой. Предположим, мы настолько дружественны к пользователю, что не говорим ему: "Вот, посмотри, какая картинка!", а предлагаем некий выбор. Для первого раза из двух возможностей.

SCREEN 9
INPUT "Введите 1, если хотите увидеть солнце и любую другую цифру, если ничего не хотите"; X
IF X=l THEN CIRCLE (320, 175), 50, 2: PAINT(320, 175), 14, 2 ELSE ?"Спасибо за внимание!"

Программа запрашивает у пользователя цифру (причем в случае ввода буквы просит осуществить ввод заново). Если это цифра 1,
то рисуется желтый круг, в любом другом случае появляется надпись "Спасибо за внимание!".
Поупражняемся.
114. Напишите программы, которые в зависимости от введенного числа либо вычисляют функцию, либо выдают сообщение, что функция не определена:

115. Напишите программу для вычисления функции:


116. Напишите программу, определяющую четность или нечетность введенного с клавиатуры целого числа.
117. Напишите программу, находящую меньшее из двух, введенных с клавиатуры чисел.
118. По четырехзначному номеру года, запрошенному с клавиатуры определите номер столетия (например, для 1492 г. — ответ XV век, для 1812 г. — XIX век). Учесть, что началом века считается первый, а не нулевой, год. (То есть, 2000-й год, из астрономии — последний год XX века).
Выше мы рассмотрели полную форму условного оператора, когда в зависимости от истинности или ложности условия выполняются те или иные действия, после чего программа переходит к выполнению следующей за условным оператором команды.
Существует также неполная форма условного оператора. Она выглядит так

IF условие THEN
команды,_выполняемые_в_случае_истинности_условия

В этом случае программа проверяет условие, и в случае его истинности выполняет команды, указанные после служебного слова then. Если же условие ложно, то программа переходит к выполнению следующей за условным оператором команды.
Например, программу автомата по продаже сигарет можно модифицировать при помощи сокращенного варианта условного оператора:

CLS
INPUT "Как Вас зовут"; N$
INPUT "А сколько Вам полных лет"; S
IF S<18 THEN ?"Вам еще рановато курить, ";N$ : END
?'Минздрав России предупреждает — курение опасно для вашего
здоровья!"

Здесь появляется новый оператор end, выполнение которого в любом месте программы приводит к ее остановке.
Возможен еще также составной условный оператор, когда после служебных слов then или else вновь следует условный оператор, когда выполнение тех или иных действий зависит не от одного, а от нескольких условий.
Например, допустим, что Преображенский полк гренадеров набирали только из тех новобранцев, рост которых был не менее 180 см, а вес — не менее 80 кг.^ Программа этого процесса выглядела бы следующим образом:

CLS
INPUT "Как Вас зовут?"; N$
INPUT "Каков Ваш рост в см"; R
INPUT "Каков Ваш вес в кг"; М
IF R>=180 THEN IF M>=80 THEN ?"Вы - достойный кандидат
в гренадеры, ";N$ ELSE ? N$; ", к сожалению, вы в гренадеры
не годитесь"

Здесь условный оператор сначала проверяет соответствие кандидата по росту, а затем еще и по весу, и только в случае выполнения обоих условий выдается сообщение о пригодности кандидата.
При использовании составных условных операторов надо быть очень осторожным, чтобы не запутаться самому в then и else. Есть правило, по которому else относится к ближайшему слева от него then. В рассматриваемом случае первый условный оператор, который проверяет рост, относится к сокращенной форме, у него нет else, а второй является полным. Отсюда получается такой казус, что если кандидат сразу не проходит по росту,
то на экране вовсе не появится никакого сообщения, потому что программа должна перейти к следующей за условным оператором команде, а ее нет. Чтобы разобраться в этом, выполните упражнение. Вообще, лучше не злоупотреблять составными условными операторами, а разбивать их на несколько простых или использовать сложные условия, о которых мы поговорим чуть ниже.
119. Какое значение будет иметь переменная х после выполнения очередных операторов:

х=о
IF A>0 THEN IF B>0 THEN X=l ELSE X=2
при значениях переменных а и в:
А=1, В=1 А=1, В=-1 А=-1, В=1

120. Запишите в виде одного условного оператора указанные действия:

  • известно, что из трех чисел ai, A2 и аз одно отлично от других, равных между собой. Присвоить номер этого числа переменной n;

121. Напишите программу, запрашивающую у пользователя три разных целых положительных числа и находящую сумму двух наименьших из них.
122. Если N=3, то какое значение будет иметь переменная s после выполнения следующего оператора:

S=l: K=2
1: IF K>N THEN GOTO 2
S=S*K
K=K+1
GOTO 1
2: ? "S="; S

Предупреждение
В сокращенной форме условного оператора при переходе к метке можно опускать оператор goto.

Таким образом, вторая строчка предыдущей программы могла бы выглядеть так:
1: IF К > N THEN 2

Сложные условия

Если для выполнения тех или иных действий нужно одновременное выполнение двух и более условий, то они объединяются логической связкой and (И). Например, программу про набор в Преображенский полк можно было бы изменить таким образом:

CLS
INPUT "Как Вас зовут?"; N$
INPUT "Каков Ваш рост в см"; R
INPUT "Каков Ваш вес в кг"; М
IF R>=180 AND M>=80 THEN ?"Вы - достойный кандидат
в гренадеры, "; N$ ELSE ? N$; '1, к сожалению, вы в гренадеры
не годитесь"

Сразу необходимо заметить, что в рассматриваемой версии Бейсика Russian Quick Basic (в отличие от других версий Бейсика) допускается запись неравенства 0<Х<7 именно в такой форме без связки and. Например, программа для вычисления функции



выглядела бы следующим образом:

CLS
INPUT "Введите значение X"; X
IF X > 1 THEN Y=X ^2
IF 0<= X <= 1 THEN Y=X ELSE Y=-2*X+1
? "Y (X)="; Y

Третье условие мы не рассматриваем потому, что если не выполняются первые два, то, очевидно, х находится в третьем ин тервале, поскольку описанные условия охватывают всю числовую ось.
Если есть несколько условий и для организации тех или иных действий достаточно выполнения хотя бы одного из этих условий, то применяется логическая связка or (ИЛИ). Например, программа для вычисления следующей функции:
выглядит так

CLS
INPUT "Введите значение X"; X
IF X<-1 OR X>=1 THEN Y=X л 3 ELSE Y=X л 2
? "Y <X)="; Y

Для различия применения and и or можно привести такой жизненный пример. Каждый человек хоть раз задумывался о спутнике жизни и, естественно, выдвигал какие-либо условия к будущему избраннику. Так вот, более требовательные могли бы выдвинуть два таких условия: пусть он будет красивым И (and) богатым. А менее требовательные, предпочитающие синицу в руках, могли бы сказать так: пусть он будет красивым ИЛИ (or) богатым. Чувствуете разницу? В первом случае избраннику не будет отказано только в одном случае из четырех возможных, а во втором, наоборот, три исхода благосклонны. Он может быть только красив, или только богат, ну а если и красив, и богат, то тем более.
Еще один пример. В стене существует квадратное отверстие NxN см. И имеется кирпич с измерениями А, В и С. Определить, пройдет он в отверстие или нет, если подавать его можно только параллельно стенкам отверстия.
Понятно, что кирпич пройдет в отверстие только в случае, если хотя бы два его измерения меньше N. Отсюда программа будет выглядеть так:

CLS
INPUT "Введите сторону отверстия N"; N
1: INPUT "Введите стороны кирпича А, В и С"; А, В, С
IF A<N AND B<N OR A<N AND C<N OR B<N AND C<N THEN ?"Кирпич проходит в отверстие" ELSE ?"Кирпич не проходит в отверстие" INPUT "Рассмотрим еще один кирпич? 1- да, 0 — нет"; X IF X=l THEN GOTO I ELSE ?"Спасибо за работу!"

По-русски это условие можно объяснить следующим образом. Если А и В меньше N, или А и С меньше N, или В и С меньше N, тогда печатать "Кирпич проходит в отверстие", иначе печатать "Кирпич не проходит в отверстие". Кроме того, в этой программе применен достаточно простой, но эффективный ход, управляющий совместной работой пользователя и программы. Чтобы каждый раз не запускать программу (если пользователь хочет рассмотреть несколько вариантов исходных данных), применен запрос с клавиатуры вариантов продолжения: либо рассматриваем еще один кирпич, либо — конец программы. Там же вы можете видеть применение безусловного перехода в условном операторе. Разберитесь и пользуйтесь этим для грамотного оформления своих программных продуктов.
Напишите программы для решения следующих задач, используя условный оператор и сложные условия.
123. По введенным с клавиатуры коэффициентам квадратного уравнения А, В и С найдите его корни. Рассмотрите шесть возможных вариантов:

• а=в=с=о, корней бесчисленное множество (X — любое);
• а=в=о, оо, уравнение не имеет корней;
• а=о, в*0, 00, вырожденное квадратное уравнение, имеется один корень (формулу вычисления корня найдите сами);
• d<o, где d — дискриминант, который предварительно надо вычислить; уравнение не имеет вещественных корней;
• d=o, уравнение имеет два одинаковых корня (вывести их значения);
• D>0, уравнение имеет два различных вещественных корня (вычислить и вывести их значения).

Для проверки правильности работы программы предлагается шесть тестовых вариантов исходных данных:

• а=в=с=о;
• а=в=о, c=i;
• а=о, в=з, с=б (должно получиться х=-2);
• А=5, В=3, С=2;
• a=i, в=2, с=1 (должно получиться xi=x2=-i);
• А=2, В=5, С=2 (ДОЛЖНО ПОЛУЧИТЬСЯ Х1=-2, Х2=-8).

124. Осуществите запрос трех целых различных чисел с клавиатуры. Выведите на экран наибольшее и наименьшее.
125. Осуществите запрос с клавиатуры у тренера олимпийской сборной России по марафону результаты в часах, минутах и секундах трех победителей чемпионата России. Если какие-то два результата различаются менее чем на 5 сек, выведите
сообщение "Вот так шла борьба за______________медаль".
В сообщении должно быть указано достоинство медали (золотая, серебряная), за которую шла борьба. В противном случае, вычислить среднюю скорость победителя в км/час, если принять длину марафонской дистанции 42 км 195 м.
126. А сейчас мы попробуем сделать пока не очень красивый, но очень простой вариант телевизионной игры "О, счастливчик!". Придумайте пять любых вопросов, и к каждому из них четыре варианта ответов. Теперь я попробую словесно описать алгоритм, а вы — перевести его на Бейсик. Итак, запрашиваем у игрока имя, и узнаем, желает ли он играть. Если не желает, прощаемся, если желает — приветствуем и предлагаем первый вопрос с вариантами ответов. Запрашиваем у игрока с клавиатуры, какой вариант он выбирает. В случае правильного ответа начисляем ему сто очков и переходим ко второму вопросу. Если ответ неверен, то отправляемся на самое начало — снова регистрация и т. д. Первый вопрос — 100 очков, второй — 200, третий — 300, четвертый — 500, пятый — 1000. Если игрок правильно отвечает на все пять вопросов, то поздравляем его и заканчиваем программу.
127. Каждую пятницу члены Клуба толстяков выстраиваются в определенном порядке и взвешиваются. Напишите программу, которая хранит данные взвешивания 10-ти членов Клуба за прошлую неделю. Затем программа запрашивает новые данные взвешивания и для каждого члена Клуба либо выводит поздравление в случае похудения, либо величину прибавки веса с сожалением.
В рамках изучения условного оператора мы можем проанализировать основные принципы движения геометрических объектов по экрану.

CLS
S=0 Rem S — переменная, в которую
Rem будет заноситься накапливаемая сумма.
Rem Естественно, пока мы еще не ввели
Rem ни одного числа, она должна быть обнулена
1: INPUT "Введите любое число"; N
S=S+N
?"Сумма стала равна"; S
INPUT "Еще число? (1 - да, 0 - нет"; R
IF R=l THEN GOTO 1 ELSE ?"Спасибо за работу!"

Выполните упражнение.
128. Попробуйте сами написать программу, вычисляющую произведение последовательно вводимых с клавиатуры, отличных от нуля, чисел. Что изменится по сравнению с предыдущей программой?

Движение геометрических объектов по экрану

Так как интерпретатор Бейсика достаточно медлителен, то очень красивых программ с движением нам не сделать, но зная принципы, легко потом добиться большего на других языках.
Итак, движение. На самом деле, конечно, ничего там не перемещается, а создается иллюзия движения за счет того, что сначала рисуется изображение, потом оно стирается (т. е. рисуется на том же месте цветом фона), а затем вновь выводится в новом месте экрана. Компьютер достаточно быстро проделывает это, и нам кажется, что шарик, например, двигается. Начнем мы с точки, которая смещается по горизонтали, отражаясь от вертикальных сторон экрана.

SCREEN 9
X=300: Y=175 ' начальные координаты точки
DX=1 ' приращение координаты X.
' Так как мы его сделали положительным, ' координата X будет увеличиваться, а, следовательно, ' точка сначала будет двигаться вправо 1: PSET (X, Y), 14 ' вывод точки на экран PSET (X, Y), 0 ' стирание точки цветом фона IF X=0 OR X=640 THEN DX=-DX ' в случае достижения точкой
' вертикальных сторон экрана, приращение по X ' меняется на противоположное, а значит точка 1 начнет двигаться в обратную сторону X=X+DX ' изменение координаты точки GOTO 1 ' переход на метку 1, где происходит рисование точки

Программа, как вы видите, получилась зацикленной, т. е. точка будет двигаться бесконечно, пока мы не нажмем клавиши <Ctrl>+<Break>.

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

Для этого между двумя операторами pset надо вставить два оператора:
FOR 1=1 to 100: NEXT I
Это оператор цикла, о котором мы поговорим позже; пока просто поймите, что в данном месте компьютер посчитает до 100 в своем уме, и на это время в программе возникнет пауза. Подставляя вместо числа 100 другие значения, вы сможете управлять величиной паузы.
129. Напишите программу, которая заставит точку двигаться по вертикали. Потом замените точку на закрашенную окружность, а затем — на закрашенный прямоугольник.
Теперь рассмотрим организацию движения точки, которая меняет свое положение на экране и отражается от всех его четырех сторон под углом 45°, как это показано на рис. 1.32.

Рис.32. Движение точки по экрану под углом 45°

SCREEN 9
Х=300: Y=175 ' начальные координаты точки
DX=1: DY=1 ' приращение координат X и Y.
' Так как мы их сделали положительными, ' координаты X и Y будут увеличиваться, ' а, следовательно, точка сначала будет двигаться 1 вправо-вниз под углом 45 градусов 1: PSET (X, Y), 14 ' вывод точки на экран PSET (X, Y), 0 ' стирание точки цветом фона IF X=0 OR X=64 0 THEN DX=-DX ' в случае достижения точкой
1 вертикальных сторон экрана, приращение по X меняется ' на противоположное, а значит точка начнет двигаться ' в обратную по X сторону IF Y=0 OR Y=350 THEN DY=-DY ' в случае достижения точкой
' горизонтальных сторон экрана, приращение по Y ' меняется на противоположное, а значит точка ' начнет двигаться в обратную по Y сторону X=X+DX: Y=Y+DY ' изменение координаты точки GOTO 1 ' переход на метку 1, где происходит
' рисование точки

Не забывайте про паузу!
130. Замените в предыдущей программе точку на закрашенную окружность. Получится подобие бильярдного стола. А еще можно сопровождать удар шарика о границу экрана звуковым сигналом веер, который нужно добавить после изменения приращения на противоположное.
131. Усложним задачу. На экране появляется прямоугольник, от которого точка тоже должна отражаться (рис 1.33).

Рис.33. Движение точки по экрану с препятствием

Допустим, координаты углов прямоугольника следующие:

  • левый верхний 100, 180;
  • правый верхний 300, 180;
  • левый нижний 100, 230;
  • правый нижний 300, 230.

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

Для верхней:

IF Y=180 AND 100<Х<300 THEN DY=-DY

To есть если точка достигла горизонтали 180, а по X попала в интервал ] 100; 300[, то изменяем направление движения по Y на противоположное.
Для левой:
IF X=100 AND 180<Y<230 THEN DY=-DY
Рассуждения аналогичны.
132. Теперь вы готовы к более объемному и сложному заданию. Называться оно будет "Муха в графине". Сначала на экране вы рисуете прямоугольный графин с горлышком (рис. 1.34).
Затем располагаете там точку и заставляете ее двигаться внутри графина, отражаясь от его стенок (будет интересней, если вы не станете ее стирать, тогда мы сможем видеть траекторию ее полета). Меняя начальное расположение точки, можно добиться, что через какое-то время она вылетит из
графина. Пусть в этот момент на экране появится надпись "Ура! Я на свободе!", а муха продолжит полет, отражаясь от сторон экрана. Графин можно сделать закрашенным.

Рис.34. Муха в графине

133. Если вы обратили внимание, "муха" при полете слегка пробивает стенки графина. Что нужно изменить в условиях, чтобы этого избежать? Сделайте из "мухи" шарик, и снова добейтесь того, чтобы он не портил стенки графина.
Давайте сделаем простейший графический редактор. У некоторых в детстве была, наверное, и-грушка "Волшебный экран", где можно было крутить колесики и рисовать отрезками прямых линий. Почему бы то же самое не сделать на компьютере? Для этого нам понадобится использование оператора inkey$, который ожидает нажатия любой символьной клавиши и запоминает ее значение. Например:

CLS
1:K$=INKEY$ ? К$ GOTO 1

На экране будет воспроизводиться символ той клавиши, которую вы нажмете (попробуйте поставить после print k$ точку с запятой и посмотрите, что изменилось).
Теперь, совместно используя inkey$ и условный оператор, мы можем сделать полезную прикладную программу-развлечение для младших друзей. Приведем ее фрагмент.

SCREEN 9
Х=300: Y=200: С =15
начальные координаты и цвет точки рисования.
1 Вы можете задать им свои, ' произвольные значения
1: PSET(X,Y), С
K$=INKEY$
IF K$="w' THEN Y=Y -1 ' эта строка заставляет программу
' после нажатия клавиши "w" ' уменьшить координату Y на 1, ' т. е. осуществить передвижение точки ' на одну экранную единичку вверх
Rem Здесь вы программируете другие клавиши для движения
Rem в другие стороны, а также и изменение цвета,
Rem и возможно, стирание. Все в ваших руках!
GOTO 1 ' зацикливание программы на постоянный опрос ' клавиатуры

Теперь, когда программа готова, нарисуйте сами с ее помощью какую-нибудь осмысленную картинку — домик в деревне, или звездные войны, или что хотите.


Замечание
Хорошо бы предусмотреть рисование цветом фона для перемещения точки без следа. А чтобы потом определить, где находится точка, достаточно изменить ее цвет.

Оператор выбора

Для организации меню, т. е. выбора из нескольких возможностей, применяется оператор выбора, который позволяет, в зависимости от значения переменной, делать те или иные действия.
Конструкция оператора несколько тяжеловесна, но ничего страшного в ней нет.
Она выполняет один из нескольких блоков операторов в зависимости от значения выражения.

SELECT CASE тест_выражение CASE список_выражений1
[блок_ операторов_1]
[CASE список_выражений2
[блок операторов_2]}
[CASE ELSE
[блок_операторов_n]} END SELECT


Здесь тест_выражение — любое числовое или строковое выражение; список_выражений1, список_выражений2 — ОДНО ИЛИ несколь ко выражений для сравнения с параметром тест_выражение. В выражении ключевое слово is должно стоять перед любым знаком отношения. блок_операторов_1, блок_операторов_2, блок_ операторов_n — один или несколько операторов в одной или нескольких строках.
Аргументы списка выражений могут принимать любую из следующих форм или их комбинацию и должны разделяться запятыми:

  • выражение [, выражение] . . .
  • выражение ТО выражение
  • IS оператор_отношения выражение

Здесь выражение — любое числовое или строковое выражение, совместимое С параметром тёст_выражение\ знак_отношения — один из знаков отношения <, <=, >, >=, <> или =.
Рассмотрим пример:

CLS
INPUT "Введите уровень риска (1-5): "; RISK SELECT CASE RISK CASE IS >= 5
PRINT "Максимальный риск, шансов на возвращение
практически нет." PRINT "Пишите завещание." CASE 2 ТО 4
PRINT "Высокий риск, шансов на возвращение немного." PRINT "Проверьте снаряжение, оружие и припасы." CASE 1
PRINT "Рис.сутствует, возврат гарантирован." PRINT "В Вас отсутствует дух авантюризма,
это слишком скучно." END SELECT
Еще пример. По заданному номеру дня недели требуется напечатать его название:
CLS
INPUT "Введите номер дня недели"; N SELECT CASE N CASE 1
? "Понедельник" CASE 2
? "Вторник" END SELECT

Ну что ж, теория без практики суха. Задания.
134. Напишите программу, которая выводит на экран меню, содержащее список трех поэтов под номерами, затем запрашивает у пользователя номер поэта и выводит на экран какое-нибудь его четверостишие, после чего возвращается в меню. Последним пунктом меню предусмотреть выход из программы.
135. В восточных календарях принят 60-летний цикл, состоящий, в свою очередь, из пяти 12-летних подциклов. Под-циклы обозначались цветом: зеленый, красный, желтый, белый и черный. Внутри каждого подцикла годы носили названия животных: крысы, быка, тигра, кролика (зайца или кота), дракона, змеи, лошади, овцы (барана или козы), обезьяны, петуха, собаки и свиньи. Создайте программу с использованием операторов выбора, запрашивающую номер года нашей эры и печатающую его название по восточному календарю. Для проверки: 1966 г. — год красной лошади, 1984 г. — зеленой крысы.
136. Усложненный вариант предыдущего задания. Теперь требуется определить не только название введенного с клавиатуры года, но и год наступления "светлого будущего", до которого вы, безусловно, доживете! Делаем это поэтапно. Вот примерный словесный алгоритм. После введения исходного четырехзначного года с клавиатуры вам необходимо выделить составляющие его цифры и записать их в переменные А1, А2, аз и А4. (Если в номере года есть нули, то в соответствующие переменные записать 4.) Затем необходимо взять от них синусы по модулю. Из полученных значений выделить по две цифры после запятой и сложить их. Если сумма больше либо равна 10, то сложить еще раз. Должно полу-
читься 4 цифры, из которых надо составить четырехзначное число. Это и будет номер года наступления светлого будущего. Осталось определить его название по восточному календарю и вывести результаты на экран. Для проверки: при исходном годе 1986 годом светлого будущего будет 3589.


Содержание раздела