If30. Дано целое число, лежащее в диапазоне 1-999. Вывести его строку описание вида «четное двузначное число», «нечетное трехзначное число» и т. д.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
program if30; var X: Integer; begin Write('Введите число: '); Readln(X); if (x mod 2) = 0 then write('Чётное ') else write('Нечётное '); if x > 99 then write('трёхзначное '); if (99 >=x) and (x > 9) then write('двухзначное '); if x <= 9 then write('однозначное '); Writeln('число.'); end. |
Решение2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
program if30; var x:integer; begin Writeln ('Введите число: ') Read(x); if Odd(x) then write('Нечётное ') else write('Чётное '); if (x div 100)>0 then write('трёхзначное') else if (x div 10)>0 then write('двухзначное') else write('однозначное'); write(' число.'); end. |
Другие задачи из раздела If можно посмотреть здесь.
Усложнил себе задачу, а решение оказалось проще:
Мне очень нравится решение.
Вот например использование
Да так и надо! Я как то пока писал только на паскале думал решать с точки зрения универсальности всех языков и использовал
.
Но начал на Си решать эти задачи и понял, что это жутко не правильно надо использовать все возможности данного языка.
Вот сюда дойдёт только если not((x div 100)>0) то есть ((x div 100)=0). И следовательно это лишнее условие.
А вот сюда дойдёт только если число удовлетворяет всем этим условиям, кроме 0-я. Но 0-я в условии нет, так что всё хорошо. 🙂
Компактное решение я записал как Решение2 в основной статье.