11 FreeBASIC - задачки

3 месяца назад

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

Найти все трёхзначные числа - палиндромы

Палиндром - это число(слово) которое читается одинаково как справа налево и слева направо. "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 лучший из диалектов бейсика

@sergiy

Авторы получают вознаграждение, когда пользователи голосуют за их посты.
Голосующие читатели также получают вознаграждение за свой голос.
Порядок сортировки:  Популярное
32
  ·  3 месяца назад

Сюда приплывал Моби Дик

72
  ·  3 месяца назад

Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
cats, spinner, t3ran13, boddhisattva, aim, ianboil, analise, francisgrey, mishka, sergiy, vako, gildar, andrvik, max-max, kanenakat, oleg257, zoss, dimarss, kilobucks, ohlamoon, shuler, dany2323, maksina, zlody, dr-boo, arsar, volv, vasilisapor2, nefer, turkish-r, renat242, markvial, vict0r, lira, gryph0n, voltash, ladynazgool, karusel1, sharps, cepera, francesco, exan, retoldname, stranniksenya, alikssandra, gapel, galerina, acidgarry, borisss, candy777, virt, optimist, tatyanamishenko, yurchello, amelina.elena, dayver, bammbuss, dmitrijv, manavendra, mr-nikola, ondantr, nerengot, dim447, vladsm, mirgais, varja, upper, prifix, mp42b, abloud, foxycat, ksantoprotein, process, chugoi, nikulinsb, shafarevich, d0z4t0r, tulencha, kito-boy, vsebudethorosho, nikitosuna, konstab, izbushka, astramar, cryptovisitor, zelivsky, html, vredinka2345, carpe-diem, makcl, marina-spring, azarovskiy, funt33, samael27, kalter, maksh, mister-omortson, nightinga1e, apnigrich, siddxa, cryptobandera, doublingseason, photofreediver, maryatekun, lologom, anykeycheg, prezza, akva22, esperos, elcpa, karabum, sevaev, dobrotanya, boliwar, veta-less, irkinmick, archual, alexxela, cryptenthusiast
Поэтому я тоже проголосовал за него!


dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас: