- •Целочисленная арифметика
- •Дано натуральное число. Выяснить является ли оно палиндромом, то есть читается справа налево и слева направо одинаково
- •Дано натуральное число. Выяснить соотношение между количествами двоек и пятерок в этом числе
- •Найти самую большую и самую маленькую цифры данного натурального числа
- •Выяснить образуют ли цифры натурального числа возрастающую последовательность
Выяснить образуют ли цифры натурального числа возрастающую последовательность
Для сигнала о том, что цифры числа образуют нужную последовательность, будем использовать логическую переменную log.
program vozrcifri;
Var n,a,b:longint;
log:boolean;
Begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
read(n);
log:=true; с самого начала считаем, что последовательность
возрастающая
a:=n mod 10; берем последнюю цифру числа
n:=n div 10; отрезаем ее
while n>0 do бежим по цифрам числа
begin
b:=n mod 10; берем вторую цифру с конца
if a<b then
begin log:=false;break end; если последовательность не возрастающая, то
выходим из цикла
n:=n div 10; иначе отрезаем цифру
a:=b; копируем цифру
end;
if log then write('YES') выводим результат
else write('NO');
close(output);
End.
При работе с целыми числами в Паскале необходимо всегда помнить о диапазонах изменения целочисленных типов и занимаемой памяти.
Вот они:
-
тип
диапазон значений
требуемая память
Shortint
-128 .. 127
1 байта
Integer
32768 .. 32767
2 байта
Longint
-2147483648 ... 2147483647
4 байта
Byte
0 .. 255
1 байт
Word
0 .. 65535
2 байта
Над целыми числами, оставаясь в множестве целых чисел, можно выполнять следующие арифметические операции: сложение, вычитание, умножение, целочисленное деление, получение остатка от деления. Знаки этих операций:
+ - * div mod
Операции отношения равенство =,неравенство <>, больше или равно >=, меньше или равно <=, больше >,меньше < ., примененные к целым операндам, дают результат логического типа TRUE или FALSE ( истина или ложь ).
Например: 2<3 TRUE
2>3 FALSE
К аргументам целого типа применимы следующие стандартные (встроенные) функции, результат выполнения которых имеет целый тип:
Abs(X), Sqr(X), Succ(X), Pred(X),
и которые определяют соответственно абсолютное значение числа Х, Х в квадрате, следующее значение Х+1, предыдущее значение Х-1.
Результат выполнения функции Odd(X) - проверки целого числа на нечетность
имеет значение TRUE, если аргумент нечетный, и значение FALSE, если аргумент четный:
X=5 Odd(X)=TRUE
X=4 Odd(X)=FALSE.
Для быстрой работы с целыми числами определены процедуры:
Inc(X) равносильно X:=X+1
Inc(X,N) равносильно X:=X+N
Dec(X) равносильно X:=X-1
Dec(X,N) равносильно X:=X-N
Где X и N- целые числа.
Самое интересное из целочисленных делений, это деление на 10. Оно обладает замечательными свойствами, которые оказываются незаменимыми при решении задач.
235 mod 10=5, т.е. деление на 10 позволяет находить последнюю цифру числа.
235 div 10=23, отрезает последнюю цифру числа.
Соответственно 235 mod 100=35, позволяет находить две последние цифры числа, 235 div 100=2, отрезает две последние цифры числа.
Для того, чтобы поменять значения двух переменных местами мы будем использовать процедуру swap.
Procedure swap(var a ,b : integer); тип a и b может быть изменен
Var k : integer;
Begin
k:=a; a:=b; b:=k;
End;
Можно обойтись и двумя переменными.
Procedure swap(a, b :integer);
Begin
A := A xor B;
B := A xor B;
A := A xor B;
End;
Где операция xor это операция исключающего «или».