Задачка. Нужно написать числовую функцию - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Нужно написать функцию, которая бы принимала числа от 1 до 12 и выдавала бы результат по этой таблице: 1=0 2=1 3=2 4=0 5=1 6=2 7=0 8=1 9=2 10=0 11=1 12=2 Т.о. если скормить функции число 8, то она должна вернуть 1 Пробовал так:
mes:=7;
  repeat
  if (mes mod 4)=0 then mes:=0
    else if mes>4 then mes:=mes-3 else mes:=mes-1;
  until mes<=2;
Но для некоторых чисел (8,12 и ещё может пару) это не работает. Мозг плавится, чувствую что есть некое математическое уравнение решающие эту задачу в оду строчку, но не могу допереть какое?
Пока сделал так:
  case mes of
  1:mes:=0;
  2:mes:=1;
  3:mes:=2;
  4:mes:=0;
  5:mes:=1;
  6:mes:=2;
  7:mes:=0;
  8:mes:=1;
  9:mes:=2;
  10:mes:=0;
  11:mes:=1;
  12:mes:=2;
  end;
Но это неэтично

Решение задачи: «Задачка. Нужно написать числовую функцию»

textual
Листинг программы
 mes:=(mes+2) mod 3

Объяснение кода листинга программы

Список с пояснениями к коду:

  1. mes - переменная, значение которой меняется в рамках решения задачи
  2. (mes+2) mod 3 - выражение, определяющее новое значение переменной mes
  3. mes - увеличивается на 2
  4. 2 - добавляется к mes
  5. mod 3 - результат увеличивается на 3 (так как 2 + 3 = 5)
  6. mes - принимает новое значение (5)
  7. mes - выводится на экран (в данном случае не указано, где и как это происходит)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы