Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
II .11. Вложенные циклы в решении вычислительных задач
Работу вложенных циклов можно сравнить с работой часов: старший цикл – часовая стрелка, в него вложен цикл по минутам, а в цикл по минутам вложен цикл по секундам. Параметр цикла по секундам пробежит значения от 0 до 59 и содержимое параметра цикла по минутам увеличится на 1. Задание: Вывести на экран информацию, которая регистрирует сколько секунд, минут и часов прошло с момента запуска данной программы. Решение: Пусть за секунды, минуты и часы отвечают переменные s, m и t, соответственно. Очевидно, они и станут параметрами циклов. Параметры циклов по секундам и минутам должны принимать значения от 0 до 59, а параметр цикла по часам – от 0 до 23. На экран все время работы программы должна выводиться информация, например: С момента запуска программы прошло: часов минут секунд 0 1 54 Соответственно, каждую секунду информация о времени должна обновляться. Стирать информацию с экрана позволит нам стандартный оператор CLS. Между обновлениями должна проходить 1 секунда, поэтому мы будем использовать оператор SLEEP 1. Вывод будет осуществляться операторами PRINT. Программа: CLS FOR T=0 TO 23 FOR M=0 TO 59 FOR S=0 TO 59 PRINT “С момента запуска программы прошло: ” PRINT “часов”, “минут”, “секунд” PRINT T, M, S SLEEP 1 CLS NEXT S NEXT M NEXT T END Если программу не прервать, то она может работать в течение суток. Прервать ее работу можно принудительно, с помощью комбинации клавиш CTRL + BREAK.
Задание: Составить программу к решению задачи: «У мальчика было Х рублей. Он решил на все деньги купить в лавке шарики, хлопушки и свистки. Шарик стоит 3рубля, хлопушка 10 рублей, а свисток 5 рублей. Какие варианты покупки он может сделать? Останется ли у него сдача, и какая? » Решение: Пусть за количество купленных вещей отвечают, соответственно, переменные а – шарики, b – хлопушки, с – свистки, а под сдачу отведем переменную s. Так как мальчик планирует потратить все деньги, то его сдача, судя по ценам на товары, должна быть менее 3-х рублей. Вычислить сдачу можно вычитая из Х стоимость покупки: s=X-(a*3+b*10+c*5). Так как у мальчика всего Х рублей, то он на них может купить от 0 до Х\3 шариков, от 0 до Х\10 хлопушек и от 0 до Х\5 свистков. Здесь а, b и с могут принимать значения из вышеуказанных диапазонов, т.е. будут параметрами циклов. От количества предметов одного вида, зависит количество предметов другого вида, поэтому циклы не могут работать независимо друг от друга, а должны быть вложенными (не важно в какой последовательности). Программа: CLS PRINT “введите количество денег” INPUT X FOR A=0 TO X\3 FOR B=0 TO X\10 FOR C=0 TO X\5 S=X-(A*3+B*10+C*5) IF S< 3 THEN PRINT “можно купить: ”, A, “ шариков ”, B, “ хлопушек ”, C, “ свистков” PRINT “сдача составит ”, S, “ рублей” END IF NEXT C NEXT B NEXT A END Задание: Составить программу к решению задачи: «Сеня, Петя и Миша подбросили игральные кости. Побеждает тот, у кого выпадет больше очков. Петя победил. Известно, что суммарное количество очков на костях равно 12. Напечатайте варианты, которые могли выпасть у ребят». Решение: Пусть, соответственно именам ребят, переменные S, P и M отвечают за количество очков, выпавших на игральных костях. По условию задачи, P> S и P> M (так как Петя победил), а также S+P+M=12. Раз Петя победил, значит у него выпало больше 4-х очков (в противном случае, на троих 12 бы не получилось, ведь на грани игральной кости может быть от 0 до 6 точек). Переменные S и M могут принимать значения в диапазоне от 0 до P-1. Причем, если известны P и S, то значение M можно всегда подсчитать (M=12-P-S). Программа: CLS FOR P =5 TO 6 FOR S =0 TO P-1 M=12-P-S PRINT “выпало очков: ”, S, “ у Сени ”, P, “ у Пети ”, M, “ у Миши” NEXT S NEXT P END Задание: Составить программу к решению задачи: «Распечатать все трехзначные числа, у которых первая и последняя цифры не равны и в сумме дают среднюю. Например: 132, 462 и т.п. Подсчитайте сколько их». Решение: Пусть, A, B и C соответствующие цифры трехзначного числа. По условию задачи, A< > C A+C=B. Переменная A может принимать любые значения в диапазоне от 1 до 9 (первая цифра числа не может быть равна 0). Последняя цифра числа может принимать значения от 0 до 9. Вторую цифру мы всегда можем определить (B=A+C). Если будут найдены подходящие цифры, то число из них просто собрать по разрядам: X=A*100+B*10+C. Для подсчета количества, заведем переменную-счетчик. Сколько раз мы будем печатать число, столько раз нам надо переменную-счетчик увеличивать на 1. Программа: CLS kol=0 FOR A=1 TO 9 FOR C=0 TO 9 IF (A< > C) THEN B=A+C X=A*100+B*10+C PRINT X KOL=KOL+1 END IF NEXT C NEXT A PRINT " всего таких чисел ", KOL END
Задания для самостоятельного решения: 1. Найти сумму цифр всех трехзначных чисел. 2. Найти трехзначные числа, сумма цифр которых равна произведению этих цифр. 3. Подобрать к числу 42*4* такие цифры, чтобы полученное число делилось на 72. 4. Вывести на экран все четырехзначные числа, цифры которых различны и соответствуют условию a*b+c*d=a+b+c+d. 5. Подберите к числу ***999 три такие цифры, чтобы полученное число делилось на 13, на 17 и на 19. 6. Подберите к числу 523*** три такие цифры, чтобы полученное число делилось на 7, на 8 и на 9. 7. Долгожитель (возраст не менее 100 лет) обнаружил, что если к сумме квадратов цифр его возраста прибавить число дня его рождения, то получится его возраст. Сколько лет долгожителю? 8. В красном и синем мешочках лежат красные и синие фишки с номерами от 1 до 100. Какие различные наборы могли быть, если известно, что достав из каждого мешка по фишке игрок заработал х очков. 9. Доказать, что любое число Х (Х> 7, по умолчанию), можно представить в виде суммы троек и пятерок.
|
Последнее изменение этой страницы: 2019-03-30; Просмотров: 75; Нарушение авторского права страницы