Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Урок 3 задача на вывод 1 и 0 как функция целого
program u_kontur; { Написать программу, которая выдаёт 0 для целых чисел из сегмента [0..10] и выдаёт 1 для всех остальных чисел Написать программу sign (x) для целых чисел. Условный оператор не использовать. } { Рассмотрим простой пример: i div 10 для i от нуля до 9 выдаёт нам 0. Для остальных чисел выдаёт нам результат деления числа i нацело на 10. Задача решена для чисел в диапазоне от 0 до 20. В случае i = 20 уже будет 2, а нам нужно 1. При i = 30 и выше будет 3. Например, 31 div 10 = 3. Значит, при i = 30, 31, 32... нужно получить выражение, чтобы '31 div 10' давало бы 1. Если 31 div 10 = 3, то нужно найти выражение от i, которое даёт 2. Тогда из 31 div 10 вычитаем результат выражения, который даёт нам 2. Это выражение выглядит так: (31-10) div 10 = 2. Значит 31 div 10 - (31-10) div 10 = 3 - 2 = 1. Появляется новая проблема: при i = 0 эта формула даёт нам 1, а должно быть 0. } var i : integer; begin for i := -30 to 30 do writeln ( i, ' ', // для всех i < 0 выводим 1, для 0 <= i <= 10 выводим 0, для i > 10 выводим 1: ( i div 11 - (i-11) div 11) * (1 - 1 div (1 + abs(i))):4, ' ', // для всех i < 0 выводим -1, для 0 <= i <= 10 выводим 0, для i > 10 выводим 1: ( i div 11 - (i-11) div 11) * (1 - 1 div (1 + abs(i))) * i div (abs(i) + 1 div (1+abs (i))):4, ' ', // если заменить 11 на 1 то получим функцию sign (i): ( i div 1 - (i-1) div 1) * (1 - 1 div (1 + abs(i))) * i div (abs(i) + 1 div (1+abs (i))):4 ); end.
run
|
edit
|
history
|
help
0
zadacha8
Tableau
zad27-notoptimized
1
Алгоритм умножения двухзначного числа на 11
1
hello world
test30
practica 9 ejercicio 1
123