11 FreeBASIC - задачки
Некоторые задачи бывает проще решить на компьютере методом грубой силы. Метод грубой силы или метод полного перебора это метод решения задачи путем перебора всех возможных вариантов. Помню случай в школе когда я после решения задачи на олимпиаде по математике решил проверить своё решение на компьютере. Задача была из класса - найти все ..значные числа у которых... Деталей я уж не помню. Вот сегодня и займёмся решением таких задач.
Найти все трёхзначные числа - палиндромы
Палиндром - это число(слово) которое читается одинаково как справа налево и слева направо. "121", "ABBA", "1001", "или".
for i=100 to 999
- перебор всех трехзначных чисел.
среди трёхзначных чисел палиндром это если первая и последняя(третья) цифры числа равны
if (int(i/100)==i mod 10) then print i;
вот и всё))
В трехзначном числе зачеркнули среднюю цифру. Полученное двузначное число оказалось в 6 раз меньше исходного. Найти такое трехзначное число
Решение этой задачи будет отличаться от предыдущей лишь условием в операторе if, а чтобы не делать его очень сложным введём ещё одну переменную (для двухзначного числа составленного из трёхзначного)
t=(i\100)*10 + (i mod 10)
if t*6=i then print i;
Выходит что такое число лишь одно - 108. Проверим 108=18*6
Какое трехзначное число равно кубу цифры его единиц, а также квадрату числа, составленного из его второй и первой цифры?
используем текст предыдущих программ
Введём в программу такие переменные:
e3 - куб цифры единиц числа;
vp2 - квадрат числа составленного из его второй и первой цифр.
e3= i mod 10: e3=e3*e3*e3
vp2=((i \ 10) mod 10)*10 + i\100
теперь запишем условие - число(i) должно быть равно и e3 и vp2
if i=e3 and i=vp2 then print i;
Найти все трёхзначные числа у которых нет одинаковых цифр
используем текст предыдущих программ
введём переменные t1 - первая цифра, t2 - вторая цифра и t3 - третья цифра числа
t1= i\100
t2=(i\10) mod 10
t3=i mod 10
if t1<>t2 and t1<>t3 and t2<>t3 then print i;
Ну и какой же программист не изменит условие задачи и не решит её иную версию...))) не захотелось изменить? значит ещё не программист)))
Найти все трёхзначные числа у которых ЕСТЬ одинаковые цифры(только две)
измениться лишь условие в операторе if
if (t1=t2 AND t1<>t3) OR (t1=t3 AND t1<>t2) OR (t2=t3 AND t1<>t2) then print i;
слишком длинное условие мжно перенести на следующую строку исспользуя знак подчёркивания _
AND - логическое умножение имеет более всокий приоритет над OR, значит вычислится раньше OR и скобки не нужны. я их поставил для того чтобы подчеркнуть что условия три.
if t1=t2 AND t1<>t3 OR t1=t3 AND t1<>t2 OR t2=t3 AND t1<>t2 then print i;
А можно было всё это расписать на три оператора if
if t1=t2 AND t1<>t3 then print i;
if t1=t3 AND t1<>t2 then print i;
if t2=t3 AND t1<>t2 then print i;
Этот вариант более лёгок как для начинающих, ну а для компьютера чреват лишними действиями. Например если первый оператор if сработал - второй и третий проверять уже не стоит, а компьютер их проверит)))
Ну а если сделать условие задачи не таким строгим и убрать требование "только две" тогда смягчится и условие в if - исчезнет проверка на неравенство и опреатор будет выглядеть так:
if t1=t2 OR t1=t3 OR t2=t3 AND t1<>t2 then print i;
Решите задачи
Найти все трехзначные числа Армстронга(числа, равные сумме кубов своих цифр)
Найдите все трехзначные числа, первая цифра которых равна разности второй и третьей цифр
Найдите все трехзначные числа, средняя цифра которых равна сумме первой и третьей цифр
10 FreeBASIC - Игра угадай число
09 FreeBASIC - случайные числа, RND
08 FreeBASIC - случайные числа, RND
07 FreeBASIC - циклы
06 FreeBASIC - условный оператор
05 FreeBASIC - первые простые задачки
04 FreeBasic - графика
03 FreeBASIC. Текстовые переменные и операции с ними
02 FreeBASIC Переменные в Бейсике
01 Начинаем изучать FreeBasic
00 FreeBASIC лучший из диалектов бейсика