Решение
Первая ($n/100$) и последняя цифра ($n%10$) заданного числа проверяются на равенство. Если условие выполняется, то выводится знак равенства, иначе выводится наибольшая цифра.
Задача
Определить все возможные значения произведения $i·j$, если целочисленные значения переменных $i$ и $j$ меняются соответственно $i$ от $a$ до $b$ и $j$ от $c$ до $d (1 ≤ a, b, c, d ≤ 10)$.
Входные данные
В одной строке заданы $4$ числа $a, b, c$ и $d$ ($a$ может быть больше $b$, $c$ может быть больше $d$).
Выходные данные
Вывести количество возможных вариантов произведения.
Решение
Для начала присваивается $a$ и $c$ минимальные значения из пары, а $b$ и $d$ — максимальные. Переменной $p$ присваивается произведение минимальных значений, а $i$ присваивается минимальное значение из первой пары. Далее в цикле проверяется делится ли число $p$, которое находится в диапазоне от произведения минимальных значений до произведения максимальных, на $i$ и $j$. Если условие выполняется, то временной переменной присваивается единица, а счетчик (результат) увеличивается на $1$.
Задача
Дано трёхзначное натуральное число $n$. Определить сумму наибольшего и наименьшего трёхзначных чисел, которые могут быть образованы из числа $n$ перестановкой цифр.
Входные данные
Натуральное число $n$ $(100 ≤ n ≤ 999)$.
Выходные данные
Вывести сумму наибольшего и наименьшего трёхзначных чисел
Решение
Заданное число разбиваем на цифры: для получения сотен число делится на сто, для десятков — остаток деления на сто делится на десять, для сотен — остаток деления на десять. Все числа округляются в сторону нуля и записываются в массив, который отсортировывается с помощью функции
sort, входным параметром которой является функция, которая возвращает $(0, 1$ или $-1)$. Далее проверяется, нет ли в числе нулей. Если нулей в числе нет, то сумма считается по формуле $(100·a[0]+10·a[1]+a[2]+100·a[2]+10·a[1]+a[0])=$ $=arr[0]·101+arr[1]·20+arr[2]·101$. Если же ноль есть, то делается проверка на ноль в следующем элементе. Если ноль есть, сумма считается по формуле $arr[1]·100+arr[2]·1+arr[1]·1+arr[2]·100=arr[1]·110+arr[2]·101$, иначе последний элемент умножается на $200$. Все эти проверки делаются для того, чтобы для чисел, в которых есть нули, минимальное число, которое генерируем для суммы, было трехзначным.
Задача
Стоимость бутылки воды, учитывая стоимость пустой бутылки, составляет $1$ грн $20$ коп., а стоимость пустой бутылки $20$ коп.
Сколько бутылок воды можно выпить на $n$ грн, учитывая, что пустые бутылки можно сдавать, и на полученные деньги приобретать новые бутылки воды.
Входные данные
Натуральное число $n$ $(1≤n≤1000)$.
Выходные данные
Количество бутылок воды, которое можно выпить на $n$ грн.
Решение
Вводим переменную $n$ равную числу заданных денег. Так как при покупки и возвращении бутылки тратится $1$ грн, количество купленной воды будет на одну меньше, чем количества купюр. Чтобы «избавиться» от монет (десятичной части числа) при получении количества бутылок воды, округляем конвертируем переменную в целочисленный тип с округлением в сторону $0$.
Альтернативный вариант
1
2
3
4
5
6
7
8
9
10
11
classTest{
staticfunctionmain(){
varn=10,i=0;
while(n>1.2)
{
n--;
i++;
}
trace(i);
}
}
Решение
Вводим переменную $n$ равную числу заданных денег и счетчик купленной воды. В цикле отнимаем от переменной $1$, так как при возвращении бутылки тратится лишь $1$ грн, а счетчик купленной воды увеличиваем на $1$.
Ссылка на оригинальную статью switch является оператором ветвления в языках программирования, в том числе и в Haxe.
Конструкция
switch открывается выражением «switch» и тело функции ограничивается фигурными скобками {}. Ветки
switch начинаются или с ключевого слова «case» с условием выполнения данной ветки, или же с ключевого слова «default» для состояния по умолчанию. В обоих случаях после условия идет двоеточие : и блок операторов, которой надо выполнить.
1
2
3
4
5
switch(переменная){
caseусловие1:оператор1;оператор2;оператор3;
caseусловие2:оператор4;
default:оператор;
}
Так как в Haxe ветки case выполняются независимо, break не нужен.
Конструкции
switch могут быть использованы как значение; в таком случае типы всех case и default должны унифицироваться. Пример. Программа, которая выводит текущий день недели.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
classTest{
staticfunctionmain(){
trace(Date.now());
vart=Date.now();
varb=t.getDay();
switch(b){
case0:trace("Sunday");
case1:trace("Monday");
case2:trace("Tuesday");
case3:trace("Wednesday");
case4:trace("Thursday");
case5:trace("Friday");
case6:trace("Saturday");
}
}
}
Haxe позволяет использовать выражения, например, мы можем в предыдущем примере написать не b, а b+1, если мы захотим узнать следующий день.
Также Haxe дает нам большие возможности в использовании
switch. Например, мы можем проверять соответствия значений различных типов с помощью регулярных выражений (шаблонов).
Рассмотрим пример с массивом, взятый из данной статьи. В качестве входного параметра для оператора
switch дается массив фиксированной длины. В зависимости от заполнения и длины массива, оператор будет выдавать нужный результат. Данный пример показывает нам, что мы можем указывать как и нужный нам размер массива, так и заполнение определенной ячейки массива. Например, программа выведет 0 только при массиве длинной в два элемента, где в первой ячейке будет число 2. Если же размер массива будет другой или первой будет стоять не 2, то оператор продолжит сравнения с остальными условиями. В данном примере роль состояния по умолчанию выполняет последнее условие, которое «пропускает» любой массив. Стоит заметить, что если выполняются сразу два условия, например, массив будет состоять из [2,6], то программа все равно выведет 0, так как первое условие идет раньше.