Boolean22. Дано трехзначное число. Проверить истинность высказывания: «Цифры данного числа образуют возрастающую или убывающую последовательность».
Решение:
1 2 3 4 5 6 7 8 |
program Boolean 22; var A: Integer; begin Write('Введите число A: '); Readln(A); Writeln((((A mod 10)> ((A mod 100) div 10 )) and ((A mod 100) div 10 >(A div 100))) or (((A mod 10)< ((A mod 100) div 10 )) and ((A mod 100) div 10 <(A div 100)))); end. |
Другие задачи из раздела Boolean можно посмотреть здесь.
ну поскольку я только учится начал, то уверен имею право спросить:
вот есть у этой задачи два очевидных решения — первое описано выше, а второе с доп. переменными(разбивающими число на сотни/десятки/единицы)… так, не решение получается одно, просто способы немного разнятся…
так вот о чем я — в будущем, допустим при написании кода, считается ли первый способ(с одной переменной) рациональнее для вычислений или это просто рациональней для скорости набора (ну для самого человека).
надеюсь вопрос понятен. спасибо
Это на самом деле очень сложный вопрос и на него нет никогда однозначного решения.
В данных задачках использовать или не использовать переменную это … да просто выпендриваемся между друг другом 🙂
В реальной жизни в реальной программе надо задумываться, какими ресурсами обладает компьютер который будет выполнять программу.
Поясню упростим себе задачу и скажем, что в компьютере есть только процессор, память и некий вывод… пусть будет принтер. (ооочень такой сфирический компьютер в вакуме 🙂
И вот нам надо взять и вывести на принтер степень двойки от 1 до 3!!!
есть варианты
Первый пример
юзаем память:
объявляем переменную! допустим «перменная».
И говорим этому компьютеру:
переменная=2
вывести переменную на принтер
перменная=переменная*2
вывести переменную на принтер
перменная=переменная*2
вывести переменную на принтер
Второй пример
юзаем проц:
вывести 2
вывести 2*2
вывести 2*2*2
Третий пример
до кучи:
вывести 2
вывести 4
вывести 8
Теперь вопрос какой из этих примеров в реальной жизне жизнеспособный?
ответ всё зависит от компа… если у него памяти хватило только на то чтобы загрузить алгоритм программы… то первый вариант с объявлением переменной не будет работать!
если там проблемы с производительностью, то вариант с использованием проца будет не лучшим вариантом.
третий вариант может не заработать из за какойнить дикой особенности принтера… что если в коде не умножают он ничего не выводит… шучу конеш… но что только не бывает в жизни 🙂
Ну и опять же если вы используете много памяти, то убить компьютер можно даже не большими программами.
Да самое простое:
Программка просто запускает две своих копии… мало компу не покажется. Забьёт всю память, а дальше результат будет зависеть от ось. 🙂
Тот же самый эффекта можно добиться случайно загрузив сильно большой массив или не подумав начать записывать экспоненциальные даныые в какойнить массив.
ну и правда жизни… в современных тенденциях, иногда лучше отожрать 50 гигов винта и гиг оперативы, чем постоянно качать банеры из интернета.:)
Ух ты, спасибо за развернутый ответ
Да, пожалуйста… у меня их очень много 🙂