Решение 50 типовых задач по программированию на языке Pascal Дата размещения сборника в сети


Download 1.52 Mb.
Pdf ko'rish
bet52/77
Sana03.02.2023
Hajmi1.52 Mb.
#1152062
TuriРешение
1   ...   48   49   50   51   52   53   54   55   ...   77
Bog'liq
Задачи на Pascal

за-
даче 31): 
right := 0; 
for i := 1 to digits div 2 do begin 
right := right * 10; 
right := right + n mod 10; 
n := n div 10 
end;
Так как число нечетно, нужно отбросить его центральную цифру 5, после чего в переменной 
n (
равной 79) будет содержаться левая половина числа, а в переменной right (также равной 79) – 
его перевернутая правая половина. Они равны, следовательно, ответ положительный. 


Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal» 
47 
Тот же порядок действий применяется и для чисел четной длины, однако теперь нам не нужно 
ничего отбрасывать после накопления реверсной левой части числа в переменную right, так как в 
числах четной длины нет серединной цифры. Например, дано число 1551: переворачиваем правую 
половину числа 51 (получим 15) и сравниваем ее с левой половиной: 15 = 15, ответ положительный. 
Эти допущения говорят о том, что необходима проверка длины числа n на нечетность и, соот-
ветственно, отбрасывание серединной цифры в случае нечетности: 
if odd(digits) then n := n div 10; 
Код: 
1.
program CheckPalindrome; 
2.
3.
var 
4.
n, a, right: longint; 
5.
digits, i: byte; 
6.
7.
begin 
8.
readln(n); 
9.
a := n; 
10.
digits := 0; 
11.
while a <> 0 do begin 
12.
a := a div 10; 
13.
inc(digits) 
14.
end; 
15.
right := 0; 
16.
for i := 1 to digits div 2 do begin 
17.
right := right * 10; 
18.
right := right + n mod 10; 
19.
n := n div 10 
20.
end; 
21.
if odd(digits) then n := n div 10; 
22.
writeln(n = right) 
23.
end. 
Выполним «ручную прокрутку» алгоритма на числе 147741: 
1) 
Считаем длину числа, она равна 6 (строки 11-14); 
2) 
В цикле из 6 div 2 = 3 повторений прибавляем к right (формируя реверсную запись) по-
следние три цифры числа n, после чего отбрасываем их и имеем в n 147, в right 147 (строки 
16-20); 
3) 
Так как odd(digits) = odd(6) = false, ничего не делаем (строка 21); 
4) 
Выводим на экран значение выражения n = right – ответ положительный (строка 22). 

Download 1.52 Mb.

Do'stlaringiz bilan baham:
1   ...   48   49   50   51   52   53   54   55   ...   77




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling