Предмет: Информатика,
автор: Kassandriala
условие: нужно ввести 4 значное целое число и определить является ли оно палиндромом("перевертышем").
Для определения отдельных разрядов числа используется операции div и mod
Что в Паскале обозначает:
program n1;
var
a,b,i,q,l:integer;
constLimit=4
begin
readln(a);
l:=a;b:=0;
while a>0 do
begin
q:=a mod 10;
b:=b*10+q;
a:=a div 10;
end;
if(l=b)then writeln('yes')else writeln('no');
end.
1. while a>0 do
2. q:=a mod 10;
b:=b*10+q;
a:=a div 10;
Я не совсем понимаю, для чего в переменную b мы присвоили значение где b умножено на 10 и к произведению прибавлена q?
3. l:=a;b:=0;
и я не понимаю, почем мы здесь присвоили b значение равное 0?
Объясните пожалуйста!
Ответы
Автор ответа:
0
while a>0 do
begin
q:=a mod 10;
b:=b*10+q;
a:=a div 10;
end;
Этот фрагмент формирует число, обратное заданному числу а, это число в конце будет находится в ячейке b. Для примера рассмотрим короткое число. Пусть а=123
123>0 поэтому все команды будут выполняться:
q:=a mod 10; Остаток от деления 123 на 10: q=3
b:=b*10+q; Записываем ее в b b=0*10+3=3 (Вот поэтому сначала b должен быть 0)
a:=a div 10; Откидываем от а последний разряд: а=12 (берем целую часть деления 123 на 10)
идем в начало цикла
12>0 поэтому все команды будут выполняться:
q:=a mod 10; Остаток от деления 12 на 10: q=2
b:=b*10+q; Записываем ее в b b=3*10+2=32
a:=a div 10; Откидываем от а последний разряд: а=1 (берем целую часть деления 12 на 10)
идем в начало цикла
1>0 поэтому все команды будут выполняться:
q:=a mod 10; Остаток от деления 1 на 10: q=1
b:=b*10+q; Записываем ее в b b=32*10+1=321
a:=a div 10; Откидываем от а последний разряд: а=0 (берем целую часть деления 1 на 10)
идем в начало цикла. Условие 0>0 не выполняется, переходим к командам после цикла. А в b находится число, перевернутое по отношению к исходному.
begin
q:=a mod 10;
b:=b*10+q;
a:=a div 10;
end;
Этот фрагмент формирует число, обратное заданному числу а, это число в конце будет находится в ячейке b. Для примера рассмотрим короткое число. Пусть а=123
123>0 поэтому все команды будут выполняться:
q:=a mod 10; Остаток от деления 123 на 10: q=3
b:=b*10+q; Записываем ее в b b=0*10+3=3 (Вот поэтому сначала b должен быть 0)
a:=a div 10; Откидываем от а последний разряд: а=12 (берем целую часть деления 123 на 10)
идем в начало цикла
12>0 поэтому все команды будут выполняться:
q:=a mod 10; Остаток от деления 12 на 10: q=2
b:=b*10+q; Записываем ее в b b=3*10+2=32
a:=a div 10; Откидываем от а последний разряд: а=1 (берем целую часть деления 12 на 10)
идем в начало цикла
1>0 поэтому все команды будут выполняться:
q:=a mod 10; Остаток от деления 1 на 10: q=1
b:=b*10+q; Записываем ее в b b=32*10+1=321
a:=a div 10; Откидываем от а последний разряд: а=0 (берем целую часть деления 1 на 10)
идем в начало цикла. Условие 0>0 не выполняется, переходим к командам после цикла. А в b находится число, перевернутое по отношению к исходному.
Автор ответа:
0
Так понятно?
Похожие вопросы
Предмет: Химия,
автор: lega1234
Предмет: Химия,
автор: Toooooooooooooom
Предмет: Литература,
автор: Аноним
Предмет: Физика,
автор: gamer4080